2016-06-22 24 views
0

Ich bevorzuge die Verwendung der Abfrage-Generator in meinem Projekt zu erzwingen, finde ich die sql produziert ist vorhersehbarer als Schreiben von geraden DQL (Es hat einige sehr seltsame Verbindungen auf mich in der Vergangenheit gemacht) . Ich habe jedoch festgestellt, dass diese DQL die einzige Möglichkeit ist, diese Aggregationsabfrage durchzuführen.Doctrine2 DQL-Äquivalent in Query Builder

$q = $this->getEntityManager()->createQuery(<<<DQL 
     SELECT IDENTITY(p.business, 'id') as businessId, SUM(p.amount) as points 
     FROM APIBundle\Entity\Point p 
     WHERE IDENTITY(p.user, 'id') = :user 
     GROUP BY p.business 
DQL 
) 
     ->setParameter('user', $user->getId()) 
    ; 

    return $q; 

Ist dies meine einzige Option oder kann der QueryBuilder für das gleiche Ergebnis verwendet werden?

Ich verstehe, dass der Querybuilder eher ein Orm-Tool mit Hydration usw. und nicht so nützlich für mehr Array-basierte nicht hydratisierte Abfrage Resultsets ist.

Antwort

0

Ja, Aggregation ist ein kniffliges Bit für jedes ORM. Sie können Low level API verwenden, um den DQL-Teil in den Abfrage-Generator zu integrieren, wenn Sie möchten: