我在Symfony中编写了一个查询,该查询返回一年中每月每个月的总金额。但是,当我尝试将其从月份编号转换为月份名称时,它会抛出
错误:预期的学说\ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS,得到了“,”
我的代码。
$resultYearly = $this->getTransactionRepository()
->createQueryBuilder('p')
->select('MONTH(p.transactionDate, \'%b\') AS MonthOfYear, sum(p.amount) Total')
MonthAndYear, sum(p.amount) Total')
->where('p.transactionDate >= :end')
->setParameter('end', new \DateTime('-1 year'))
->groupBy( 'MonthOfYear')
->getQuery()
->getArrayResult();
它与DATE_FORMAT完美配合,但是当我使用MONTH时会引发错误。
答案 0 :(得分:1)
您需要从\'%b\'
函数中删除Month
的一部分,因为MONTH
函数仅采用一个参数,即日期。
因此您的代码应为:
$resultYearly = $this->getTransactionRepository()
->createQueryBuilder('p')
->select('MONTH(p.transactionDate) AS MonthOfYear, sum(p.amount) Total')
MonthAndYear, sum(p.amount) Total')
->where('p.transactionDate >= :end')
->setParameter('end', new \DateTime('-1 year'))
->groupBy( 'MonthOfYear')
->getQuery()
->getArrayResult();
答案 1 :(得分:0)
使用
DATE_FORMAT(p.transactionDate,'%b') AS MonthOfYear