2016-06-22 8 views
0

私は自分のプロジェクトでクエリビルダーを使用することを推奨します。これは、生成するSQLがまっすぐなDQLを書くよりも予測可能であることがわかります(過去に、 。しかし、私はこのDQLがこの集約クエリを実行できる唯一の方法であることを発見しました。Doctrine2 DQLのクエリビルダーでの対応

$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; 

これは私の唯一のオプションですか、同じ結果としてクエリビルダを利用できますか?

私は、querybuilderが水分補給などのormツールであり、より多くの配列ベースの非水和クエリ結果セットでは役に立たないと理解しています。

答えて

0

はい、集計は任意のORMのトリッキーなビットです。あなたが好きなら、Low level APIを使用して、DQLパートをクエリービルダーにラップすることができます。

$queryBuilder->add('select', 'SUM(p.amount) as points');