Для полиморфных связей лучше использовать конструктор запросов. К примеру из действующего проекта: %% $tags = ['tag1','tag2','tag3']; file_card::selectRaw('file_cards.*') ->join('file_card_key_word', 'file_card_key_word.file_card_id', '=', 'file_cards.id') ->join('key_words', 'file_card_key_word.key_word_id', '=', 'key_words.id') ->whereIn('key_words.name', $tags ) ->groupBy('file_cards.id') ->get(); %% выбираются все статьи по тегам исключая дубликаты