学说 - 按日期分组

Tru*_* Vu 2 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");
Run Code Online (Sandbox Code Playgroud)

我试着把它转换成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();
Run Code Online (Sandbox Code Playgroud)

使用:

"beberlei/DoctrineExtensions": "^1.0"
Run Code Online (Sandbox Code Playgroud)

错误:[语义错误]第0行,第103行附近'DATE_FORMAT(e.expDate,':错误:无法按未定义的标识或结果变量进行分组.

M K*_*aid 6

我假设你已经配置了捆绑提到并添加所需的配置一样

doctrine:
    orm:
        dql:
            datetime_functions:
                date_format: DoctrineExtensions\Query\Mysql\DateFormat
Run Code Online (Sandbox Code Playgroud)

现在在查询中,您可以dateAsMonthDATE_FORMAT表达式的结果分配别名,在组中可以使用此别名

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