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

+0

啊你删除的很快,但在这里:'回声json_encode($测试,真正的);' – meda

+0

@meda,错的问题,我删除了它,因为这个问题是错误的。我得到[]数组对象,因为我通过一种将我的键更改为数字数组值的排序方式来运行它。它与我以为是无关的。 – PressingOnAlways

这是Doctrine2的错误。它已经在教义的最新开发分支中得到修复,但直到2.5年才会发布。

http://www.doctrine-project.org/jira/browse/DDC-1858