我正在进行查询,我想检查一下我设置的关系:
内容模型:
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
。我做错了什么?
答案 0 :(得分:1)
我能够通过whereHas
查询实现我想要的目标:
$content = Content::whereHas('contentType', function ($query) {
$query->whereIn('slug', ['post', 'page']);
})
->where('slug', $arguments['slug'])
->with('supplementary')
->first();
这样我只会在contentType
关系中获取帖子或网页作为slug的内容。