【问题标题】:Doctrine- Group by dateDoctrine- 按日期分组
【发布时间】:2018-06-11 07:03:14
【问题描述】:

我有这个问题:

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"

错误:[语义错误] line 0, col 103 near 'DATE_FORMAT(e.expDate,':错误:无法按未定义分组 标识或结果变量。

【问题讨论】:

  • 你的expDate的类型是什么,是Date还是DateTime?

标签: php mysql symfony doctrine-orm


【解决方案1】:

我假设您已经配置了提到的包并添加了所需的configuration

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

现在在查询中,您可以为DATE_FORMAT 表达式的结果分配一个别名dateAsMonth,在分组中您可​​以使用此别名

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

【讨论】:

  • doctrine/orm 2.5 中“doctrine.orm”下无法识别的选项“dql”。
  • @felansu 您可能忘记按照他提供的链接(配置)中所述设置学说扩展
猜你喜欢
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2021-09-30
  • 2012-05-28
  • 2011-12-30
  • 2015-04-17
  • 2016-07-01
相关资源
最近更新 更多