【发布时间】:2013-12-21 19:54:33
【问题描述】:
我正在尝试在学说中执行包含类似内容的查询
SUM(a.id = 1) as `1`
由于某些原因,它总是给我以下错误:
[Syntax Error] line 0, col 15: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got '='
这是我正在使用的代码
$result = $em->getRepository('MyBundle:PlayerAction')
->createQueryBuilder('pa')
->select(array(
'SUM(a.id=1) as `1`,
SUM(a.id=2) as `2`,
SUM(a.id=3) as `3`,
p.playerName,
pa.timestamp'
))
->innerJoin('pa.action', 'a')
->innerJoin('pa.player', 'p')
->where('pa.timestamp > ?1')
->groupBy('p')
->setParameter(1, time() - $time)
->orderBy('p.playerName', 'ASC');
【问题讨论】:
-
我猜你不需要在 dql 中像
1那样对 sum_1 进行反引号,或者你可以看看 stackoverflow.com/questions/1513384/… -
但错误表明它在 a.id=1 上崩溃,= 符号。我认为它正在寻找 sum 函数的结尾,右括号)
-
您对
SUM(a.id=1)有什么期望?这个语句必须做什么? -
它总结了 id 字段(也可以计算,是的),我在 mysql 中尝试过,它给了我正确的结果。只是在教义中的 = 失败
-
嗯,它一直抛出这个错误,我在文档中找不到解决方案
标签: php symfony doctrine-orm dql query-builder