簡體   English   中英

查詢生成器中的Doctrine2 DQL等效項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM