我正在使用Zend Framwork 3和Doctrine 2.我得到了一个相对复杂的DQL,其中包含多个连接和where子句。
我现在需要为having子句中具有不同参数的查询获取一些行计数。我认为SELECT COUNT(*) FROM (original-query) AS c
是最简单的方法。但是当尝试使用本机查询时,我遇到了将参数从DQL绑定到本机查询以及尝试执行时遇到的问题。喜欢
$queryBuilder->select('count(c)')->from('('.$originalQuery->getDQL().')', 'c');
我得到:
Error: Class '(' is not defined.
答案 0 :(得分:0)
<强>更新强>
似乎你不能这样使用它:
由stof创建的评论:
DQL是关于查询对象的。支持FROM中的子选择 子句意味着DQL解析器无法构建结果集 映射不再(因为子查询返回的字段可能不匹配 对象了。这就是为什么它不能得到支持(支持它 只有在没有水合作用的情况下运行查询的情况是不行的 IMO因为它意味着查询解析需要依赖于 执行模式)。
在您的情况下,最好的解决方案可能是运行SQL查询 (因为你得到一个标量,无论如何你都不需要ORM水合作用)