@MaxSemenov

Почему не работает условие выборки жадной загрузки в Laravel?

Привет всем, пытаюсь сделать выборку со связной моделью
ProductCategory::with(['domains' => function ($query) {
    $query->where('title', 'like', '%czechpartyking.de%');
}])->toSql();

но условие не работает, а запрос выходит таким если применить метод toSql()
"select * from `product_categories` where `product_categories`.`deleted_at` is null"

хотя если сделать опечатку в условии выбивает ошибку с нормальным запросом
select `domains`.*, `domain_category_pivot`.`category_id` as `pivot_category_id`, `domain_category_pivot`.`domain_id` as `pivot_domain_id` from `domains` inner join `domain_category_pivot` on `domains`.`id` = `domain_category_pivot`.`domain_id` where `domain_category_pivot`.`category_id` in (5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28) and `ame` = czechpartyking.de

и если его вставить в консоль mysql все работает
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
@lavren
Возвращает лишнее, даже те записи у которых связи нет

Может надо использовать whereHas()?

With даже по названию говорит что возвращается основной запрос но с записями отношений которые подходят под условия. Если этих отношений нет то вернется без отношений.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Метод with генерирует отдельный запрос, который выполнится после получения результатов основного, поэтому и toSql его не возвращает. Установите Debugbar или Telescope и смотрите запросы там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы