insert batch and update batch in laravel
Insert and update batch (bulk) in laravel
composer require mavinoo/laravel-batch
File app.php in array providers:
Mavinoo\Batch\BatchServiceProvider::class,
File app.php in array aliases:
'Batch' => Mavinoo\Batch\BatchFacade::class,
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);// orbatch()->updateMultipleCondition($userInstance, $arrays, $keyName);
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);// orbatch()->update($userInstance, $values, $index);
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);// orbatch()->update($userInstance, $values, $index);
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);// orbatch()->update($userInstance, $values, $index);
use App\Models\User;$userInstance = new User;$columns = ['firstName','lastName','email','isActive','status',];$values = [['Mohammad','Ghanbari','emailSample_1@gmail.com','1','0',],['Saeed','Mohammadi','emailSample_2@gmail.com','1','0',],['Avin','Ghanbari','emailSample_3@gmail.com','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 arraysample array result:Array([totalRows] => 384[totalBatch] => 500[totalQuery] => 1)
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: updateUser::batchUpdate($value, $index);// ex: insertUser::batchInsert($columns, $values, $batchSize);
// ex: update$result = batch()->update($userInstance, $value, $index);// ex: insert$result = batch()->insert($userInstance, $columns, $values, $batchSize);
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
USDT Address: 0x98410956169cdd00a43fe895303bdca096f37062