Doctrine2 (Doctrine 2.1) eifriges Laden in Symfony2

Sagen wir, ich habe zwei Personen in meinem Symfony2 Projekt : Category und Article (eine Kategorie mit vielen Artikeln).

In meinem CategoryRepository habe ich diese Methode:

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

Wenn ich mich gut daran erinnern, in Symfony1.4 (und die entsprechende version der Lehre), die zurückgegebenen Objekte haben Ihre 'Erzeugnisse' - Attribut gefüllt, indem die entsprechenden Article Objekte.
Nun, in Symfony2, Proxy-Objekte zurückgegeben.

Also wenn ich die Schleife Durchlaufen, einer bestimmten Kategorie von Artikeln, So viele Abfragen wie Iterationen ausgeführt werden.

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

Ich verstehe, das ist Doctrine2.1 ist default lazy loading-Verhalten.

Frage 1: wie ist das eine bessere Lösung?
N-Abfragen anstelle von 1.

Ich versuchte, Sie zu zwingen, eager loading, indem Sie Folgendes tun:

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

Aber das Ergebnis bleibt das gleiche.

Frage 2: wie Kraft eager loading in Doctrine2?

InformationsquelleAutor der Frage Guillaume Flandre | 2012-01-12

Schreibe einen Kommentar