Как получить запись Doctrine со всеми реляционными записями?

Мне было интересно, есть ли способ получить запись со всеми реляционными данными, что-то вроде «глубокой выборки».

Итак, если модель Child была связана с другой моделью Parent, можем ли мы получить Child и затем получить доступ к Child->Parent->name через один запрос?

Сегодня Doctrine запускает запрос всякий раз, когда осуществляется доступ к отношению. Это слишком дорого? его нужно оптимизировать?

Спасибо


person Prasad    schedule 31.07.2010    source источник


Ответы (1)


Doctrine автоматически увлажняет связанные объекты, когда вы выбираете поля из этих отношений:

Doctrine_Query::create()
  ->select('a.*, c.*)
  ->from('Article a')
  ->innerJoin('Category c');

В этом примере объекты Article и Category гидратируются (дополнительных запросов не делается).

person Jakub Zalas    schedule 31.07.2010
comment
спасибо Куба. это означает, что мне придется писать свои собственные запросы, и для этого нет перегрузки волшебного метода fetch()! - person Prasad; 01.08.2010
comment
Вы имеете в виду методы поиска*? В любом случае их использование не рекомендуется (с точки зрения производительности). - person Jakub Zalas; 01.08.2010