Задать вопрос
@jjsf

Как отфильтровать Продукты по всем указанным Тегам у каждого из них?

Есть модель Product и Tags. Cвязал их через belongsToMany.
Как отфильтровать Продукты по всем указанным Тегам у каждого из них? т.е например чтобы у каждого товара были теги 44,34,21,54 ( не хотя один из них, а все)

$tags_pages=[44,34,21,54]; // Это лишь пример массива. Элементы и количество  массива меняется.  

$Product = Product::whereHas('tags', function($query) use($tags_pages)
     {            
          $query->whereIn('id',$tags_pages);
      })->get();

Так фильтруются продукты, если у них есть хотябы один указанный тег. А нужно что бы все указанные теги были у каждого продукта.

Пробовал так, но ничего на выходе 0 продуктов:

$tags_pages=[44,34,21,54];  // Это лишь пример массива. Элементы и количество  массива меняется.  
    $Product = Product::whereHas('tags', function($query) use($tags_pages)
         {    
               foreach($tags_pages as $tag){
                $query->whereIn('id', $tags_pages);
                }

          })->get();
  • Вопрос задан
  • 96 просмотров
Подписаться 2 Простой Комментировать
Решение пользователя Max К ответам на вопрос (2)
@jjsf Автор вопроса
решение:
$tags_pages=[44,34,21,54]; // Это лишь пример массива. Элементы и количество  массива меняется.  

$Product = Product::whereHas('tags', function($query) use($tags_pages)
     {            
          $query->whereIn('id',$tags_pages);
      }, '=', count($tags_pages))->get();


т.е еще проверяем количество тегов
Ответ написан
Комментировать