|
20 | 20 | use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryBuilderHelper;
|
21 | 21 | use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
22 | 22 | use ApiPlatform\Core\Exception\InvalidArgumentException;
|
23 |
| -use Doctrine\Common\Collections\ArrayCollection; |
24 | 23 | use Doctrine\DBAL\Types\Type as DBALType;
|
25 | 24 | use Doctrine\ORM\Query\Parameter;
|
26 | 25 | use Doctrine\ORM\QueryBuilder;
|
@@ -143,18 +142,20 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
|
143 | 142 | * each provided as a single setParameter()
|
144 | 143 | */
|
145 | 144 | $inQuery = [];
|
146 |
| - $args = []; |
147 | 145 | $type = $metadata->getTypeOfField($field);
|
148 | 146 | $nbValues = \count($values);
|
149 | 147 |
|
| 148 | + // get current parameters, because QueryBuilder->setParameters() erase previous parameters set |
| 149 | + $parameters = $queryBuilder->getParameters(); |
| 150 | + |
150 | 151 | for ($i = 0; $i < $nbValues; ++$i) {
|
151 | 152 | $valueParameter = $queryNameGenerator->generateParameterName($field);
|
152 | 153 | $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)); |
154 | 155 | }
|
155 | 156 | $queryBuilder
|
156 | 157 | ->andWhere(sprintf($wrapCase('%s.%s').' IN (%s)', $alias, $field, implode(',', $inQuery)))
|
157 |
| - ->setParameters(new ArrayCollection($args)); |
| 158 | + ->setParameters($parameters); |
158 | 159 | }
|
159 | 160 |
|
160 | 161 | // metadata doesn't have the field, nor an association on the field
|
|
0 commit comments