[英]Doctrine2 DQL equivalent in query builder
我更喜歡在項目中強制使用查詢生成器,我發現它生成的sql比編寫直接DQL更可預測(過去對我進行了一些非常奇怪的連接)。 但是,我發現此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用於相同的結果?
我逐漸了解到,querybuilder更像是帶有水合等的orm工具,對於更多基於數組的非水合查詢結果集沒有用。
是的,對於任何ORM來說,聚合都是一個棘手的問題。 如果您願意,可以使用低級API將DQL部分包裝到查詢生成器中:
$queryBuilder->add('select', 'SUM(p.amount) as points');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.