0 / 0 / 0
Регистрация: 06.07.2019
Сообщений: 3
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Возможно ли используя Criteria выбрать данные из связанных таблиц одним запросом?31.01.2020, 11:16. Показов 1989. Ответов 2
Здравстуйте!
Проект использует Symfony 3, Doctrine 2. Есть таблица объявлений и таблица пользователей, которые эти объявления подали. При выводе списка объявлений надо показывать имена пользователей. То есть хочется чтобы выполнился запрос вида
У меня сейчас так: Фрагмент сушности Adverts
Фрагмент view
В итоге имеем 1 Запрос в таблицу adverts и 10 SQL запросов в таблицу users, по одному на каждое объявление Я понимаю, как это можно сделать одним запросом используя queryBuilder, но возможно ли добиться выборки одним запросом используя Criteria?
0
|
31.01.2020, 11:16 | |
Ответы с готовыми решениями:
2
Удаление связанных между собой строк из двух таблиц одним запросом Sqlite3 Данные из 3 таблиц одним запросом Выбрать данные одним запросом Как одним запросом получить данные из разных таблиц? |
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
|
|
31.01.2020, 19:34 | 2 |
Можно всё)))
И критерия вам не нужна. $this->getDoctrine()->getRepository('App:Adverts')->createQueryBuilder('a') ->select('a', 'user') ->leftJoin('a.user', 'user') ->where('a.isDeleted = 0') ->andWhere('a.isHide = 0') ->andWhere('a.isModerate = 1') ->order('a.delta', 'DESC') ->setMaxResults($limit) ->setFirstResult(0) ->getQuery()->execute(); Могут быть ошибки я синтаксис не проверял. Суть этого в том что в select вы указываете которые сущности нужно выгрузить сразу. В этом случае я как бы указываю что дай мне все обьявления и сразу выгрузи юзеров. Добавлено через 3 минуты От блин, поздно увидел))) Можно попробовать связь fetch="eager" навесить но тогда юзер будет постоянно подгружаться с обьявлениями. Ну и если в критериях есть select(не на чем проверить щас) то может и получиться
0
|
0 / 0 / 0
Регистрация: 06.07.2019
Сообщений: 3
|
||||||||||||||||
01.02.2020, 09:41 [ТС] | 3 | |||||||||||||||
Большое спасибо за ответ!
О таком не знал, буду разбираться. Хочу остановиться на том, почему я не хочу использовать QueryBuilder (или использовать его как можно реже), возможно что-то ещё подскажете. Насколько я понимаю (тестировал уже довольно давно, месяц-два назад), если в проекте настроен second_level_cache и в моделях указан @ORM\Cache то получение данных методом
А в случае с QueryBuilder мы каждый раз в коде должны явно вызывать метод
0
|
01.02.2020, 09:41 | |
01.02.2020, 09:41 | |
Помогаю со студенческими работами здесь
3
Получение одним запросом данные из двух разных таблиц PDO Выбрать данные из связанных таблиц Выбрать данные, посчитать строки и сделать update одним запросом Как одним запросом собрать данные из разных таблиц на примере базы данных? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |