我有一个一对多的关系。所以我可以使用此代码来显示所有帖子。
$tag = Tag::where('slug', $slug)->first();
$posts = $tag->posts;
它工作正常,但我想过滤子项以显示。例如:
$posts = $tag::whereHas('posts', function($query){
$query->where('accept', 1)
})->get();
但它得到的是标签而不是帖子。知道如何解决我的问题吗?
最佳答案
在 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();
关于php - 从父项中获取过滤后的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902608/