Doctrine2 - (как) получить связанные объекты с главной - PullRequest
2 голосов
/ 01 сентября 2011

Предположим, у меня есть сопоставление ассоциаций в Doctrine2.

Как определить, что мне нужно извлечь все связанные объекты при запросе основного?

Практически,если я определю (Main 1- * Sub), а затем получу доступ ко всем элементам в Sub collection, Doctine выполнит один запрос БД, чтобы получить каждый Sub-объект.Мне нужно, чтобы Sub-объекты извлекались в основном запросе (JOIN).

Комментарии или (желательно) приветствие RTM доктрины)

1 Ответ

3 голосов
/ 01 сентября 2011

Если вам это нужно на постоянной основе (т. Е. Всегда извлекать все ассоциации), объявите свои ассоциации eager .За подробностями обращайтесь к Руководству по доктрине глав 17-19.

Если вам нужно всего лишь несколько фрагментов кода - используйте DQL для запроса ( manual ),Таким образом, вам нужно будет указать все ваши ассоциации.

$query = $em->createQuery("SELECT u, a FROM User u JOIN u.address a WHERE a.city = 'Berlin'");
$users = $query->getResult();

Если вы собираетесь часто использовать этот запрос, то хорошая идея заключить его в класс Entity (простое, но не лучшее решение)или создайте Repository для сущности (немного сложнее, но это "правильный путь").

...