我想知道当您预加载关系并使用lazy
流数据时会发生什么。
例如:
$query = User::query()
->where('age', '>=', 18)
->with([
'posts' => ['images'],
'comments'
]);
foreach($query->lazy(1000) as $user) {
// do stuff with preloaded data
}
在这种情况下,语句如何with
表现?它只对 1000 个块进行预加载吗?
每个块将执行自己的查询。
为了说明,我将通过仅考虑
User
和Post
模型(User
有许多Post
/Post
属于User
)来简化您的示例。假设数据库中只有 13 个用户(ID 1 到 13)
以下代码:
将执行以下操作
如果你想亲眼看看,你可以使用
DB::listen
它来帮助。我在 Artisan 控制台中完成了此操作