當(dāng)我查詢超過(guò) 1000 條記錄時(shí),Eloquent 會(huì)占用大量?jī)?nèi)存。我該如何解決?!例如,假設(shè)有一個(gè)users包含 10000 多條記錄的表,我想運(yùn)行以下語(yǔ)句。User::whereIsActive(1)->get()
->each(fn (User $user) => $user->notify())
1 回答

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