我只想显示与多个标签相关的帖子。帖子和标签之间存在多对多的联系。
在过滤器菜单中,用户可以检查多个标签,然后只需要显示与所有这些标签相关的帖子。
例如:如果用户检查#fruit和#vegetable标签,则将同时显示带有这两个标签的帖子。
whereIn('tag_id',$ array_of_tag_ids)方法正在工作,但它显示所有带有至少一个指定标签的帖子。
谢谢
答案 0 :(得分:1)
您可以将foreach与whereHas一起使用。
$tags = $request->input('tags');
$posts = Post::when($tags, function($query) use ($tags){
foreach($tags as $tag){
$query->whereHas('tags', function($query) use ($tag){
$query->where('id', $tag);
});
}
})
->get();