Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Batch Laravel Package

mavinoo/laravel-batch

Laravel Batch provides bulk insert and update helpers for Laravel models. Use Batch::update with a key column or updateMultipleCondition for per-row conditions, making large data changes faster and cleaner without repetitive queries. Includes a facade and batch() helper.

View on GitHub
Deep Wiki
Context7

Laravel BATCH (BULK)

Insert and update batch (bulk) in laravel

License Latest Stable Version Total Downloads Daily Downloads

Install

composer require mavinoo/laravel-batch

Service Provider

File app.php in array providers:

Mavinoo\Batch\BatchServiceProvider::class,

Aliases

File app.php in array aliases:

'Batch' => Mavinoo\Batch\BatchFacade::class,

Example Update Multiple Condition

use App\Models\User;

$userInstance = new User;
$arrays = [
    [
        'conditions' => ['id' => 1, 'status' => 'active'],
        'columns'    => [
            'status' => 'invalid',
            'nickname' => 'mohammad',
        ],
    ],
    [
        'conditions' => ['id' => 2],
        'columns'    => [
            'nickname' => 'mavinoo',
            'name' => 'mohammad',
        ],
    ],
    [
        'conditions' => ['id' => 3],
        'columns'    => [
            'nickname' => 'ali',
        ],
    ],
];
$keyName = 'id';

Batch::updateMultipleCondition($userInstance, $arrays, $keyName);
// or
batch()->updateMultipleCondition($userInstance, $arrays, $keyName);

Example Update 2

use App\Models\User;

$userInstance = new User;
$value = [
    [
        'id' => 1,
        'status' => 'active',
        'nickname' => 'Mohammad',
    ],
    [
        'id' => 5,
        'status' => 'deactive',
        'nickname' => 'Ghanbari',
    ],
];
$index = 'id';

Batch::update($userInstance, $value, $index);
// or
batch()->update($userInstance, $values, $index);

Example Update 3

use App\Models\User;

$userInstance = new User;
$value = [
    [
        'id' => 1,
        'status' => 'active',
    ],
    [
        'id' => 5,
        'status' => 'deactive',
        'nickname' => 'Ghanbari',
    ],
    [
        'id' => 10,
        'status' => 'active',
        'date' => Carbon::now(),
    ],
    [
        'id' => 11,
        'username' => 'mavinoo',
    ],
];
$index = 'id';

Batch::update($userInstance, $value, $index);
// or
batch()->update($userInstance, $values, $index);

Example Increment / Decrement

use App\Models\User;

$userInstance = new User;
$value = [
    [
        'id' => 1,
        'balance' => ['+', 500], // Add
    ],
    [
        'id' => 2,
        'balance' => ['-', 200], // Subtract
    ],
    [
        'id' => 3,
        'balance' => ['*', 5], // Multiply
    ],
    [
        'id' => 4,
        'balance' => ['/', 2], // Divide
    ],
    [
        'id' => 5,
        'balance' => ['%', 2], // Modulo
    ],
];
$index = 'id';

Batch::update($userInstance, $value, $index);
// or
batch()->update($userInstance, $values, $index);

Example Insert

use App\Models\User;

$userInstance = new User;
$columns = [
    'firstName',
    'lastName',
    'email',
    'isActive',
    'status',
];
$values = [
    [
        'Mohammad',
        'Ghanbari',
        '[email protected]',
        '1',
        '0',
    ],
    [
        'Saeed',
        'Mohammadi',
        '[email protected]',
        '1',
        '0',
    ],
    [
        'Avin',
        'Ghanbari',
        '[email protected]',
        '1',
        '0',
    ],
];
$batchSize = 500; // insert 500 (default), 100 minimum rows in one query

$result = Batch::insert($userInstance, $columns, $values, $batchSize);
// or
$result = batch()->insert($userInstance, $values, $index);
// result: false or array

sample array result:
Array
(
    [totalRows]  => 384
    [totalBatch] => 500
    [totalQuery] => 1
)

Example called from model

Add HasBatch trait into model:

namespace App\Models;

use Mavinoo\Batch\Traits\HasBatch;

class User extends Model
{
    use HasBatch;
}

And call batchUpdate() or batchInsert() from model:

use App\Models\User;

// ex: update
User::batchUpdate($value, $index);

// ex: insert
User::batchInsert($columns, $values, $batchSize);

Helper batch()

// ex: update
$result = batch()->update($userInstance, $value, $index);


// ex: insert
$result = batch()->insert($userInstance, $columns, $values, $batchSize);

Tests

If you don't have phpunit installed on your project, first run composer require phpunit/phpunit

In the root of your laravel app, run ./vendor/bin/phpunit ./vendor/mavinoo/laravel-batch/tests

Donate

USDT Address: 0x98410956169cdd00a43fe895303bdca096f37062

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums