学说 - 按日期分组

时间:2017-12-31 23:38:59

标签: php mysql symfony doctrine-orm

我有这个问题:

SELECT DATE_FORMAT(exp_date, "%Y-%m") AS Month, sum(exp_total) FROM export
GROUP BY DATE_FORMAT(exp_date, "%Y-%m");

我试图将它转换为Symfony原则,如下所示:

$qb = $this
  ->createQueryBuilder('e')
  ->select('DATE_FORMAT(e.expDate, \'%Y-%m\'), sum(e.expTotal) total')
  ->groupBy('DATE_FORMAT(e.expDate, \'%Y-%m\')');
return $qb->getQuery()->getResult();

使用:

"beberlei/DoctrineExtensions": "^1.0"
  

错误:[语义错误]第0行,第103列附近   ' DATE_FORMAT(e.expDate,':错误:无法按undefined分组   识别或结果变量。

1 个答案:

答案 0 :(得分:6)

我假设你已经配置了提到的捆绑包并添加了所需的configuration之类的

doctrine:
    orm:
        dql:
            datetime_functions:
                date_format: DoctrineExtensions\Query\Mysql\DateFormat

现在在查询中,您可以将dateAsMonth的别名分配给DATE_FORMAT表达式的结果,并在分组中使用此别名

return $qb =   $this->createQueryBuilder('e')
                    ->select('DATE_FORMAT(e.expDate, \'%Y-%m\') as dateAsMonth, sum(e.expTotal) total')
                    ->groupBy('dateAsMonth')
                    ->getQuery()
                    ->getResult();