first()和take()在Eagle-Load laravel中不能正确工作



我有一个Post Model,它与Post_picshasMany关系,与类别模型有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

最新更新