Laravel限制急切加载不起作用

时间:2017-07-01 12:31:54

标签: php mysql laravel

我正在进行查询,我想检查一下我设置的关系:

内容模型:

public function contentType()
{
    return $this->belongsTo('App\ContentType', 'ct_id');
}

的ContentType

public function contents()
{
    return $this->hasMany('App\Content', 'ct_id');
}

然后,我尝试过这样的查询:

$content = Content::where('slug', $arguments['slug'])
                ->with(['contentType' => function ($query) {
                    $query->where('slug', 'post');
                }])->get();

return $content;

我希望从Db获得$content,其中contentType具有post slug slug,我从表中获取内容,但经过测试后,我就是无论我为contentType contentType放置什么,每次都会得到相同的记录。我在Db中只有一条记录,这就是为什么我得到相同的记录,但我甚至应该得到那条记录,如果它没有slug的{​​{1}}不同比post。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我能够通过whereHas查询实现我想要的目标:

$content = Content::whereHas('contentType', function ($query) {
                    $query->whereIn('slug', ['post', 'page']);
                })
                ->where('slug', $arguments['slug'])
                ->with('supplementary')
                ->first();

这样我只会在contentType关系中获取帖子或网页作为slug的内容。