Я пытаюсь сделать поиск принадлежащих ко многим отношениям.
У меня есть ссылки и теги ссылок, ссылка может иметь много тегов ссылок.
Поэтому я пытаюсь найти два тега, но я хочу, чтобы он только возвращал ссылки, имеющие ОБА теги. Пока у меня есть это:
$links = Link::whereHas('linktags', function($q) use($query, $where) {
$q->whereIn('name', $query);
})->with('linktags')->get();
Это выполняет поиск взаимосвязи и возвращает результат, но он соответствует ЛЮБОМУ тегам, а не ОБА их.
Я посмотрел на документацию, но не могу найти способ сделать это. Есть идеи?
Я не совсем уверен, что вы помещаете в свой $ запрос и $ где переменная, но в соответствии с 4.2 документа Вы можете просто добавить простые «wheres» к своему закрытию, например так:
$links = Link::whereHas('linktags', function($q) use($query, $where, $tag1, $tag2) {
$q->where('name', $tag1);
$q->where('name', $tag2);
})->with('linktags')->get();
Других решений пока нет …