first()和take()在Eager Load laravel

时间:2015-11-12 09:18:16

标签: php laravel

我的帖子模型与 post_pics 具有 hasMany 关系,并且与类别模型属于属关系。

我想获取所有帖子及其所有类别,但每个帖子的第一个post_pics。

为此,我写了这个Eager Load Constraints:

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()方法之后移除第一个()方法时,一切正常并返回每个帖子的所有图片但是当我使用第一个()时/ strong>方法,只返回有多张图片的模型的第一张图片。

我尝试采取(1)约束,但它也不起作用。

什么是问题,我该怎么做?

1 个答案:

答案 0 :(得分:0)