[英]Laravel Eloquent Model Mass Update
我希望能夠在沒有 n+1 解決方案的情況下以某種方式大規模更新 eloquent model,假設我在這里有一百萬條記錄。
第一種方法:(糟糕的設計)
$users = Users::all(); //1 million record
foreach($users as $user){
$user->age = rand(5, 15);
$user->save();
}
第二種方法:(更好一點,仍然是n + 1解決方案)
DB::beginTransaction();
$users = Users::all(); //1 million record
foreach($users as $user){
DB::table('users')
->where('id', '=', $user->id)
->update([
'age' => rand(5, 15),
]);
}
DB::commit();
我個人希望有一種簡化的方法來執行以下操作:
$users = Users::all(); //1 million record
foreach($users as $user){
$user->age = rand(5, 15);
}
$users->saveAll();
您推薦什么更好的解決方案,最終不會有 100 萬次查詢? 我目前的解決方案是將記錄分塊成更小的塊並將它們放入隊列中,它將處理更小的塊但是,嗯.. 不確定這是否是正確的方法!
DB::raw('update users set age = FLOOR(1 + rand() * 5) where id !='.$user->id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.