我有一对多的关系。所以我可以使用这段代码来显示所有帖子。$tag = Tag::where('slug', $slug)->first();$posts = $tag->posts;它工作正常,但我想过滤孩子显示。例如:$posts = $tag::whereHas('posts', function($query){$query->where('accept', 1)})->get();但它得到标签而不是帖子。知道如何解决我的问题吗?
3 回答
繁星coding
TA贡献1797条经验 获得超4个赞
在 Post 模型中,您必须像这样定义与标签的关系
public function tags(){
return $this->hasMany(Tag::class);
}
这就是您可以从特定标签获取帖子的方式
$slug = "my-slug";
$posts = Post::whereHas('tags', function($query) use ($slug){
$query->where('slug', $slug)
})->where('accept', 1)->get();
牛魔王的故事
TA贡献1830条经验 获得超3个赞
您可以使用
$tag = Tag::where('slug', $slug)
->with(['posts' => function($q) {
$q->where('accept', 1);
}])->first();
$posts = $tag->posts;
- 3 回答
- 0 关注
- 209 浏览
添加回答
举报
0/150
提交
取消
