當我查詢超過 1000 條記錄時,Eloquent 會占用大量內存。我該如何解決?!例如,假設有一個users包含 10000 多條記錄的表,我想運行以下語句。User::whereIsActive(1)->get()
->each(fn (User $user) => $user->notify())
1 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
你可以each()
直接在 Eloquent-Builder 鏈中使用。通過使用each()
Laravel 自動將結果按 1000 分塊。
User::whereIsActive(1)->each(fn (User $user) => $user->notify());
如果您想要較低的塊,請將第二個參數(shù)添加到each()
User::whereIsActive(1)->each(fn (User $user) => $user->notify(), 100);
您的原始代碼get()
在 之前執(zhí)行each()
。get()
執(zhí)行數(shù)據(jù)庫查詢并將所有結果加載到內存中,然后使用 Laravel 集合each()
對它們進行分塊。這就是為什么它使用這么多內存。
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消