Symfony2 ManyToMany与COUNT

时间:2015-07-08 13:43:29

标签: mysql symfony doctrine

在我的一个存储库中获得了这个QueryBuilder。

        $query = $em->createQueryBuilder('d')
                ->select('d, i, u, SUM(CASE WHEN t.user = :userId THEN 1 ELSE 0 END) as myTickets')
                ->leftJoin('d.item','i')
                ->leftJoin('d.users','u')
                ->leftJoin('d.tickets','t')
                ->where('d.active = 1')
                ->andWhere('d.state = 1')
                ->setParameter('userId',$user->getId())
                ->orderBy('d.dateFinish', 'ASC');

当我执行代码时,MySQL会抛出这个错误。

  

Key" premium"对于带有键的数组" 0,myTickets"不存在

"溢价"是" d"。

的一个领域

如何使用自定义SUM回收字段?

1 个答案:

答案 0 :(得分:2)

由于您在查询中使用了聚合函数,因此您将获得所谓的mixed result。混合结果通常会将使用FROM子句获取的对象作为零索引[0]返回。其余结果将根据您为自定义字段设置的别名进行填充。

$result[0]将返回您要访问的对象。

$result['myTickets']将返回聚合函数的结果。在这种情况下,它是SUM

文件引用:

SELECT u, UPPER(u.name) nameUpper FROM MyProject\Model\User u
  

此查询使用返回标量值的UPPER DQL函数,因为SELECT子句中现在有一个标量值,我们得到一个混合结果。

     

混合结果的惯例如下:

     

FROM子句中提取的对象始终使用键“0”定位。

     

每个没有名称的标量都按查询中给出的顺序编号,从1开始。

     

每个别名标量都以其别名作为关键字给出。保留名称的大小写。

     

如果从FROM子句中提取了多个对象,则它们会每行交替。

您可以阅读有关此主题的更多信息here.