Doctrine2 QueryBuilder HAVING max(field)IS NULL
问题描述:
如何使用Doctrine2 QueryBuilder执行以下操作?Doctrine2 QueryBuilder HAVING max(field)IS NULL
$qb->select('o, MAX(r.performanceDate) AS HIDDEN maxPerformanceDate')->
from("Officer",'o')->
leftJoin("o.reports",'r',Join::ON,'')->
// andWhere('r.performanceDate is NULL OR maxPerformanceDate < :date OR maxPerformanceDate > :currentMonthDate')-> // does not work either, can't "WHERE" an aggregate function
having('maxPerformanceDate < :date OR maxPerformanceDate > :currentMonthDate')->
orHaving('maxPerformanceDate is null')-> // error here
addOrderBy('r.performanceDate','ASC')->
addOrderBy('o.name','ASC')->
groupBy("o.id")
// .. setParamters, etc.
;
当我执行的代码,我得到一个错误:
Doctrine\ORM\Query\QueryException : [Semantical Error] line 0, col 293 near 'maxPerformanceDate': Error: 'maxPerformanceDate' does not point to a Class.
我已经与MySQL手动尝试这样做,它的工作原理。任何解决方法赞赏。首选项不必下降到使用本机SQL。
全表定义可以在我的其他问题可以找到:
SQL SELECT data between two related tables NOT within a certain date range
答
这是Doctrine2的错误。它已经在教义的最新开发分支中得到修复,但直到2.5年才会发布。
啊你删除的很快,但在这里:'回声json_encode($测试,真正的);' – meda
@meda,错的问题,我删除了它,因为这个问题是错误的。我得到[]数组对象,因为我通过一种将我的键更改为数字数组值的排序方式来运行它。它与我以为是无关的。 – PressingOnAlways