我有一个Post Model,它与Post_pics有hasMany关系,与类别模型有belongsToMany关系。
我想获取所有帖子及其所有类别,但每个帖子的第一个post_pic。
为此,我写了这篇热切的负载限制:
Post::with([
'post_pics' => function ($query) {
$query->select(['pic_id', 'pic_name', 'post_id'])->first()->get();
},
'categories' => function ($query) {
$query->select(['categories.cat_id', 'name']);
}
])
->take(12)->orderBy('created_at', 'desc')
->get(['post_id', 'post_title', 'post_alias', 'post_content', 'comments_count', 'created_at']);
return $latestPosts;
当我在select()方法之后删除first()方法时,所有的事情都会起作用,并返回每个帖子的所有图片,但当我使用first()方法时,只返回具有多个图片的模型的第一张图片。
我尝试接受(1)约束,但它也不起作用。
什么是问题?我该怎么做?
我在Laracasts论坛上得到了答案:
https://www.laracasts.com/discuss/channels/eloquent/first-and-take-do-not-work-correctly-in-eager-load-laravel