select([ 'id', 'date', 'value', ]) ->where('id', '>', 0) ->chunkById(1000, function ($transactions) { $values = []; /** @var Collection $transactions */ foreach ($transactions as $transaction) { $transaction->date = Carbon::now()->subDays(random_int(1, 3)); $transaction->value = 10 + random_int(0, 10); $values[] = [ 'id' => $transaction->id, 'date' => $transaction->date, 'value' => $transaction->value, ]; } DB::table('transactions as t') ->joinFrom($values, 'm', DB::raw('m.id::bigint'), '=', 't.id') ->updateFrom([ 'value' => DB::raw('m.value::decimal'), 'date' => DB::raw('m.date::timestamp'), ]); }); } }