按指定的多个标签显示帖子(Laravel 5.6)

时间:2018-11-14 16:26:58

标签: php laravel-5 many-to-many laravel-5.6

我只想显示与多个标签相关的帖子。帖子和标签之间存在多对多的联系。

在过滤器菜单中,用户可以检查多个标签,然后只需要显示与所有这些标签相关的帖子。

例如:如果用户检查#fruit和#vegetable标签,则将同时显示带有这两个标签的帖子。

whereIn('tag_id',$ array_of_tag_ids)方法正在工作,但它显示所有带有至少一个指定标签的帖子。

谢谢

1 个答案:

答案 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();