Skip to content

Commit 129a912

Browse files
committed
fix code to work with complex queries.
1 parent d56122b commit 129a912

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/Bridge/Doctrine/Orm/Filter/SearchFilter.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryBuilderHelper;
2121
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
2222
use ApiPlatform\Core\Exception\InvalidArgumentException;
23-
use Doctrine\Common\Collections\ArrayCollection;
2423
use Doctrine\DBAL\Types\Type as DBALType;
2524
use Doctrine\ORM\Query\Parameter;
2625
use Doctrine\ORM\QueryBuilder;
@@ -143,18 +142,20 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
143142
* each provided as a single setParameter()
144143
*/
145144
$inQuery = [];
146-
$args = [];
147145
$type = $metadata->getTypeOfField($field);
148146
$nbValues = \count($values);
149147

148+
// get current parameters, because QueryBuilder->setParameters() erase previous parameters set
149+
$parameters = $queryBuilder->getParameters();
150+
150151
for ($i = 0; $i < $nbValues; ++$i) {
151152
$valueParameter = $queryNameGenerator->generateParameterName($field);
152153
$inQuery[] = ':'.$valueParameter;
153-
$args[] = new Parameter($valueParameter, $caseSensitive ? $values[$i] : strtolower($values[$i]), $type);
154+
$parameters->add(new Parameter($valueParameter, $caseSensitive ? $values[$i] : strtolower($values[$i]), $type));
154155
}
155156
$queryBuilder
156157
->andWhere(sprintf($wrapCase('%s.%s').' IN (%s)', $alias, $field, implode(',', $inQuery)))
157-
->setParameters(new ArrayCollection($args));
158+
->setParameters($parameters);
158159
}
159160

160161
// metadata doesn't have the field, nor an association on the field

0 commit comments

Comments
 (0)