У меня проблема с моим построителем запросов. Я использую 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
Кто-нибудь знает, как решить эту проблему?
Отлично! почему я об этом не думал. так просто xD – Vardius
Это правда? Насколько я могу судить, setParameters только обновляет значения существующих параметров или добавляет новые. Кажется, я не могу найти какой-либо метод для удаления параметра из QueryBuilder после его добавления. См. Http://www.doctrine-project.org/api/orm/2.2/source-class-Doctrine.ORM.QueryBuilder.html#354 –
hm, 'ORM \ QueryBuilder' и не переопределяет. 'DBAL \ Query \ QueryBuilder'overrides. Зависит от того, что вы используете. Для справки: [ORM] (http://www.doctrine-project.org/api/orm/2.2/source-class-Doctrine.ORM.QueryBuilder.html#337-364), [DBAL] (http: // www.doctrine-project.org/api/dbal/2.3/source-class-Doctrine.DBAL.Query.QueryBuilder.html#_setParameters) – Joshua