Laravel 8 結果分塊

2021-07-19 11:24 更新

如果你需要處理數以千計的 Eloquent 結果,使用 chunk 命令。 chunk 方法會檢索 Eloquent 模型中的『分塊』將他們提供給指定的 Closure 處理。在處理大型結果集時,使用 chunk 方法可以節(jié)省內存:

Flight::chunk(200, function ($flights) {
    foreach ($flights as $flight) {
        //
    }
}); 

傳遞到方法的第一個參數是希望每個『分塊』接收的數據量。閉包作為第二個參數傳遞,它在每次從數據庫中檢索分塊的時候調用。它將執(zhí)行數據庫查詢把檢索分塊的結果傳遞給閉包方法。

如果要基于迭代結果時也要更新的列篩選 chunk 方法的結果,則應使用 chunkById 方法。在這種情況下使用 chunk 方法可能會導致意外和不一致的結果:

Flight::where('departed', true)->chunkById(200, function ($flights) {
    $flights->each->update(['departed' => false]);
}); 
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號