簡體   English   中英

Laravel Eloquent Model 批量更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM