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,':错误:无法按未定义的标识或结果变量进行分组.
我假设你已经配置了捆绑提到并添加所需的配置一样
doctrine:
orm:
dql:
datetime_functions:
date_format: DoctrineExtensions\Query\Mysql\DateFormat
Run Code Online (Sandbox Code Playgroud)
现在在查询中,您可以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();
Run Code Online (Sandbox Code Playgroud)