52 lines
1.5 KiB
PHP
52 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Tasks\MassUpdate\Group2;
|
|
|
|
use App\Database\UpdateMassive4;
|
|
use App\Models\Transaction;
|
|
use Carbon\Carbon;
|
|
use Ramsey\Collection\Collection;
|
|
|
|
class MassUpdate4Task
|
|
{
|
|
/**
|
|
* Atualiza o campo data e valor, mas o campo data será preenchido com um valor diferente para cada transação,
|
|
* Atualizando de forma multipla com MassUpdate
|
|
*
|
|
* 1000 ..... 85.32ms DONE
|
|
* 10000 .... 737.00ms DONE
|
|
* 100000 .......... 8s DONE
|
|
* 1000000 ...... 1m 15s DONE
|
|
*/
|
|
public function handle(): void
|
|
{
|
|
Transaction::query()
|
|
->select([
|
|
'id',
|
|
'date',
|
|
'value',
|
|
])
|
|
->where('id', '>', 0)
|
|
->chunkById(1000, function ($transactions) {
|
|
|
|
$config = [];
|
|
/** @var Collection $transactions */
|
|
foreach ($transactions as $transaction) {
|
|
$transaction->date = Carbon::now()->subDays(random_int(1, 3));
|
|
$transaction->value = 10 + random_int(0, 10);
|
|
|
|
$config[] = [
|
|
'primary_key' => $transaction->id,
|
|
'columns' => [
|
|
'transactions.date' => "'$transaction->date'::timestamp",
|
|
'transactions.value' => $transaction->value,
|
|
]
|
|
];
|
|
}
|
|
|
|
$updateMassive = new UpdateMassive4();
|
|
$updateMassive->apply('transactions', 'id', $config);
|
|
});
|
|
}
|
|
}
|