У меня есть модель объявлений 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();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как мне округлить число 0,005603 до 3-х знаков после точки к наименьшему, чтобы было значение стало 0005?
Есть сайт на битриксеМне необходимо выводить определенную надпись на некоторых страницах (их больше, чем в приведенном примере кода)