Php 如何从中间表Laravel中选择交点?

Php 如何从中间表Laravel中选择交点?,php,laravel,web,Php,Laravel,Web,我有三张桌子 图书->id,姓名 标签->id,标签\名称 图书标签->图书->标识,标签->标识 一本书可以同时有多种体裁(多对多关系),反之亦然。 我想组织一个搜索,将给我的书,将只有指定的标签。例如,如果一本书的标签为Action、喜剧、Thriller,那么在搜索喜剧和Thriller时,它不会被返回,因为仍然有一个Action标签。换句话说,我只需要输出带有搜索中指定标记的书籍(以便书籍只包含它们) 我试着这样做,但它不能正常工作。例如,如果一本书有三种类型:动作类、惊悚类,而我只寻找

我有三张桌子

图书->id,姓名

标签->id,标签\名称

图书标签->图书->标识,标签->标识

一本书可以同时有多种体裁(多对多关系),反之亦然。 我想组织一个搜索,将给我的书,将只有指定的标签。例如,如果一本书的标签为Action、喜剧、Thriller,那么在搜索喜剧和Thriller时,它不会被返回,因为仍然有一个Action标签。换句话说,我只需要输出带有搜索中指定标记的书籍(以便书籍只包含它们)

我试着这样做,但它不能正常工作。例如,如果一本书有三种类型:动作类、惊悚类,而我只寻找动作类和惊悚类的书,那么我得到的这本书有三种类型(也就是说,它包括这些类型),而这不是我想要的

foreach ($tags as $tag) {
  if ($request->has($tag->tag))
     $filteredTags[] = $tag->id;
}
if ($filteredTags != null) {
  $booksQuery->whereHas('tags', function ($q) use ($filteredTags) {
      $q->whereIn('id',$filteredTags);
  });
}