Skip to content

Commit b21d5f7

Browse files
committed
SearchFilter: Fix unit tests
1 parent f3189ae commit b21d5f7

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

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

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
8484
[$alias, $field, $associations] = $this->addJoinsForNestedProperty($property, $alias, $queryBuilder, $queryNameGenerator, $resourceClass);
8585
}
8686

87-
$values = $this->normalizeValues((array) $value, $property);
87+
$values = $this->normalizeValues((array)$value, $property);
8888
if (null === $values) {
8989
return;
9090
}
@@ -112,7 +112,8 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
112112
return;
113113
}
114114

115-
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $alias, $field, $doctrineTypeField, $values, $caseSensitive);
115+
$valueParameter = $queryNameGenerator->generateParameterName($field);
116+
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $alias, $field, $doctrineTypeField, $values, $caseSensitive, $valueParameter);
116117
}
117118

118119
// metadata doesn't have the field, nor an association on the field
@@ -136,6 +137,7 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
136137
return;
137138
}
138139

140+
$valueParameter = $queryNameGenerator->generateParameterName($field);
139141
if ($metadata->isCollectionValuedAssociation($field)) {
140142
$associationAlias = QueryBuilderHelper::addJoinOnce($queryBuilder, $queryNameGenerator, $alias, $field);
141143
$associationField = $associationFieldIdentifier;
@@ -144,18 +146,17 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
144146
$associationField = $field;
145147
}
146148

147-
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $associationAlias, $associationField, $doctrineTypeField, $values, $caseSensitive);
149+
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $associationAlias, $associationField, $doctrineTypeField, $values, $caseSensitive, $valueParameter);
148150
}
149151

150152
/**
151153
* Adds where clause according to the strategy.
152154
*
153155
* @throws InvalidArgumentException If strategy does not exist
154156
*/
155-
protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $field, $fieldType, array $values, bool $caseSensitive)
157+
protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $field, $fieldType, array $values, bool $caseSensitive, string $valueParameter)
156158
{
157159
$wrapCase = $this->createWrapCase($caseSensitive);
158-
$valueParameter = $queryNameGenerator->generateParameterName($field);
159160

160161
if (self::STRATEGY_EXACT !== $strategy && 1 !== \count($values)) {
161162
$this->logger->notice('Invalid filter ignored', [
@@ -174,28 +175,28 @@ protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuild
174175
->setParameter($valueParameter, $values[0], $fieldType);
175176
} else {
176177
$queryBuilder
177-
->andWhere(sprintf($wrapCase('%s.%s').' IN (:%s)', $alias, $field, $valueParameter))
178+
->andWhere(sprintf($wrapCase('%s.%s') . ' IN (:%s)', $alias, $field, $valueParameter))
178179
->setParameter($valueParameter, $caseSensitive ? $values : array_map('strtolower', $values));
179180
}
180181
break;
181182
case self::STRATEGY_PARTIAL:
182183
$queryBuilder
183-
->andWhere(sprintf($wrapCase('%s.%s').' LIKE '.$wrapCase('CONCAT(\'%%\', :%s, \'%%\')'), $alias, $field, $valueParameter))
184+
->andWhere(sprintf($wrapCase('%s.%s') . ' LIKE ' . $wrapCase('CONCAT(\'%%\', :%s, \'%%\')'), $alias, $field, $valueParameter))
184185
->setParameter($valueParameter, $values[0], $fieldType);
185186
break;
186187
case self::STRATEGY_START:
187188
$queryBuilder
188-
->andWhere(sprintf($wrapCase('%s.%s').' LIKE '.$wrapCase('CONCAT(:%s, \'%%\')'), $alias, $field, $valueParameter))
189+
->andWhere(sprintf($wrapCase('%s.%s') . ' LIKE ' . $wrapCase('CONCAT(:%s, \'%%\')'), $alias, $field, $valueParameter))
189190
->setParameter($valueParameter, $values[0], $fieldType);
190191
break;
191192
case self::STRATEGY_END:
192193
$queryBuilder
193-
->andWhere(sprintf($wrapCase('%s.%s').' LIKE '.$wrapCase('CONCAT(\'%%\', :%s)'), $alias, $field, $valueParameter))
194+
->andWhere(sprintf($wrapCase('%s.%s') . ' LIKE ' . $wrapCase('CONCAT(\'%%\', :%s)'), $alias, $field, $valueParameter))
194195
->setParameter($valueParameter, $values[0], $fieldType);
195196
break;
196197
case self::STRATEGY_WORD_START:
197198
$queryBuilder
198-
->andWhere(sprintf($wrapCase('%1$s.%2$s').' LIKE '.$wrapCase('CONCAT(:%3$s, \'%%\')').' OR '.$wrapCase('%1$s.%2$s').' LIKE '.$wrapCase('CONCAT(\'%% \', :%3$s, \'%%\')'), $alias, $field, $valueParameter))
199+
->andWhere(sprintf($wrapCase('%1$s.%2$s') . ' LIKE ' . $wrapCase('CONCAT(:%3$s, \'%%\')') . ' OR ' . $wrapCase('%1$s.%2$s') . ' LIKE ' . $wrapCase('CONCAT(\'%% \', :%3$s, \'%%\')'), $alias, $field, $valueParameter))
199200
->setParameter($valueParameter, $values[0], $fieldType);
200201
break;
201202
default:
@@ -244,7 +245,7 @@ protected function getType(string $doctrineType): string
244245
return 'float';
245246
}
246247

247-
if (\defined(DBALType::class.'::DATE_IMMUTABLE')) {
248+
if (\defined(DBALType::class . '::DATE_IMMUTABLE')) {
248249
switch ($doctrineType) {
249250
case DBALType::DATE_IMMUTABLE:
250251
case DBALType::TIME_IMMUTABLE:

0 commit comments

Comments
 (0)