laravel chunk處理塊結果集
簡介
-
如果你需要處理成千上百條數據庫記錄,可以考慮使用 chunk
方法,該方法一次獲取結果集的一小塊,然后傳遞每一小塊數
據到閉包函數進行處理 -
優點:
使用
chunk
方法能夠在處理大量數據集合時能夠有效減少內存消耗
代碼
//場景:player表有很多數據,分塊處理每次操作100條,而不是一次性操作整個數據庫
Player::chunk(100, function($players){
foreach($players as $player) {
$player->display_status = 1;
$player->save();
//DB::table('player')->where('id',$player->id)->update(['display_status'=>1]);
}
});
//閉包函數中返回 false 來終止組塊的運行
DB::table('player')
->orderBy('id')
->chunk(100, function($players){
// 處理結果集...
return false;
});