Показать сообщения по нескольким указанным тегам (Laravel 5.6) - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу показывать только сообщения, связанные с несколькими тегами.Сообщения и теги связаны между собой многими.

В меню фильтра пользователь может проверить несколько тегов, и тогда должны отображаться только сообщения, относящиеся к , все эти теги .

Например: если пользователь проверяет теги #fruit и #vegetable, тогда будут появляться сообщения с обоими этими тегами.

метод whereIn ('tag_id', $ array_of_tag_ids) работает, но показывает все сообщения, которыеиметь хотя бы один тег из указанных.

Спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать 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();
...