У меня есть модель объявлений Ad, модель тегов Tag и реализованная связь 'многие ко многим' между ними.
Я хочу на основе запроса пользователя выдать ему все объявления, где есть выбранные им теги.
Вот мой запрос на основе Eloquent, где я хочу получить объявления, к которым привязан тег с id = 7:
$allAd = Ad::with(['tags' => function ($query) {
$query->where('id', 7);
}])->get();
Делая такой запрос я получаю абсолютно все объявления, как если бы запросил Ad::all();, включая те, где ни одного тега нет.
Что я делаю не так и как правильно составить запрос, который бы выдал только объявления с выбранными тегами?
Буду благодарен за любую помощь.
Нашел ответ на англоязычном stackoverflow. Необходимо применять методы whereHas и whereIn, а $tagsId должен быть массивом значений.
$allAds = Ad::whereHas('tags', function($query) use($tagsId) {
$query->whereIn('id', $tagsId);
})->get();
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости