大查询中的高内存使用率雄辩的 laravel

当我查询超过 1000 条记录时,Eloquent 会占用大量内存。
我该如何解决?!
例如,假设有一个users包含 10000 多条记录的表,我想运行以下语句。

User::whereIsActive(1)->get()
    ->each(fn (User $user) => $user->notify())


Helenr
浏览 108回答 1
1回答

POPMUISE

你可以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()对它们进行分块。这就是为什么它使用这么多内存。
打开App,查看更多内容
随时随地看视频慕课网APP