如何从查询生成器中删除参数?

时间:2016-01-12 13:08:18

标签: mysql symfony doctrine-orm

我的查询构建器有问题。我正在使用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有谁知道如何解决它?

2 个答案:

答案 0 :(得分:8)

调用setParameters应覆盖所有现有参数。

答案 1 :(得分:0)

我不相信上述答案是正确的。如您所见,setParameters仅更新现有参数。它不会删除任何已设置的内容:

http://www.doctrine-project.org/api/orm/2.2/source-class-Doctrine.ORM.QueryBuilder.html#354

我找到的解决方案是迭代现有参数并将每个值设置为null。

{{1}}