当我查询超过 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());
如果您想要较低的块,请将第二个参数添加到each()
User::whereIsActive(1)->each(fn (User $user) => $user->notify(), 100);
您的原始代码get()
在 之前执行each()
。get()
执行数据库查询并将所有结果加载到内存中,然后使用 Laravel 集合each()
对它们进行分块。这就是为什么它使用这么多内存。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消