我的查询构建器有问题。我正在使用symfony。我想要实现的内容:我有一个给定的查询构建器,我想根据此查询计算所有行。所以我致力于以下解决方案:
$aliases = $queryBuilder->getRootAliases();
$alias = array_values($aliases)[0];
$cloneQueryBuilder = clone $queryBuilder;
$from = $cloneQueryBuilder->getDQLPart('from');
$cloneQueryBuilder->resetDQLParts();
$newQueryBuilder = $cloneQueryBuilder
->select('count(' . $alias . '.id)')
->add('from', $from[0]);
$this->total = $newQueryBuilder->getQuery()->getSingleScalarResult();
但是我得到一个例外:Too many parameters: the query defines 0 parameters and you bound 1
有谁知道如何解决它?
答案 0 :(得分:8)
调用setParameters
应覆盖所有现有参数。
答案 1 :(得分:0)
我不相信上述答案是正确的。如您所见,setParameters仅更新现有参数。它不会删除任何已设置的内容:
http://www.doctrine-project.org/api/orm/2.2/source-class-Doctrine.ORM.QueryBuilder.html#354
我找到的解决方案是迭代现有参数并将每个值设置为null。
{{1}}