Doctrine2 (Doctrine 2.1) загружается в Symfony2

Допустим, у меня есть две сущности в моем проекте Symfony2: Категория и Статья (категория, в которой много статей).

В моем CategoryRepository у меня есть этот метод:

findAllDummy(){
  return $this->createQueryBuilder('c')
              ->leftJoin('c.Articles a')
              ->getQuery()->getResult();
}

Если я хорошо помню, в Symfony1.4 (и соответствующей версии Doctrine) у возвращаемых объектов был бы заполнен атрибут 'article'. соответствующими объектами статьи . Теперь в Symfony2 возвращаются прокси-объекты.

Итак, если я просматриваю статьи определенной категории, будет выполнено столько запросов, сколько итераций.

foreach($category->getArticles() as $article){
  echo $article->getDoctrine()
               ->getRepository('')getTitle();
}

Насколько я понимаю, это поведение ленивой загрузки Doctrine2.1 по умолчанию.

Вопрос 1: как это решение лучше? N запросов вместо 1.

Я попытался вызвать нетерпеливую загрузку, выполнив следующие действия:

findAllDummy(){
  return $this->createQueryBuilder('c')
              ->leftJoin('c.articles a')
              ->getQuery()
              ->setFetchMode('Category', 'articles', 'EAGER')
              ->getResult();
}

Но результат остался тем же.

Вопрос 2: как принудительно активировать загрузку в Doctrine2?

18
задан j0k 20 September 2012 в 11:37
поделиться