【问题标题】:Doctrine2 DQL equivalent in query builder查询生成器中的 Doctrine2 DQL 等效项
【发布时间】:2016-06-22 06:48:56
【问题描述】:

我更喜欢在我的项目中强制使用查询构建器,我发现它生成的 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 更像是一个具有水合等功能的 orm 工具,对于更多基于数组的非水合查询结果集没有那么有用。

【问题讨论】:

    标签: php postgresql symfony doctrine dql


    【解决方案1】:

    是的,聚合对于任何 ORM 来说都是一个棘手的问题。如果您愿意,可以使用Low level API 将 DQL 部分包装到查询生成器中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2012-04-06
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多