Допустим, у меня есть две сущности в моем проекте 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?