Skip to content

Commit d0663ab

Browse files
committed
fix(test): apply review requested changes
1 parent 778a3f3 commit d0663ab

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

src/Doctrine/Odm/Filter/PartialSearchFilter.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
3232
{
3333
$parameter = $context['parameter'];
3434
$property = $parameter->getProperty();
35-
$values = (array) $parameter->getValue();
35+
$values = $parameter->getValue();
3636

37-
if (1 === \count($values)) {
38-
$escapedValue = preg_quote((string) $values[0], '/');
37+
if (!is_iterable($values)) {
38+
$escapedValue = preg_quote($values, '/');
3939
$aggregationBuilder
4040
->match()
4141
->field($property)
@@ -46,7 +46,7 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
4646

4747
$match = $aggregationBuilder->match();
4848
foreach ($values as $value) {
49-
$escapedValue = preg_quote((string) $value, '/');
49+
$escapedValue = preg_quote($value, '/');
5050

5151
$match->addOr(
5252
$match->expr()

src/Doctrine/Orm/Filter/PartialSearchFilter.php

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,22 @@ final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilt
3131
public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void
3232
{
3333
$parameter = $context['parameter'];
34-
$values = (array) $parameter->getValue();
35-
3634
$property = $parameter->getProperty();
3735
$alias = $queryBuilder->getRootAliases()[0];
3836
$field = $alias.'.'.$property;
37+
$parameterName = $queryNameGenerator->generateParameterName($property);
38+
$values = $parameter->getValue();
39+
40+
if (!is_iterable($values)) {
41+
$queryBuilder->setParameter($parameterName, '%'.strtolower($values).'%');
42+
43+
$queryBuilder->{$context['whereClause'] ?? 'andWhere'}($queryBuilder->expr()->like(
44+
'LOWER('.$field.')',
45+
':'.$parameterName
46+
));
47+
48+
return;
49+
}
3950

4051
$likeExpressions = [];
4152
foreach ($values as $val) {
@@ -44,16 +55,11 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q
4455
'LOWER('.$field.')',
4556
':'.$parameterName
4657
);
47-
4858
$queryBuilder->setParameter($parameterName, '%'.strtolower($val).'%');
4959
}
5060

51-
if (1 === \count($likeExpressions)) {
52-
$queryBuilder->{$context['whereClause'] ?? 'andWhere'}($likeExpressions[0]);
53-
} else {
54-
$queryBuilder->{$context['whereClause'] ?? 'andWhere'}(
55-
$queryBuilder->expr()->orX(...$likeExpressions)
56-
);
57-
}
61+
$queryBuilder->{$context['whereClause'] ?? 'andWhere'}(
62+
$queryBuilder->expr()->orX(...$likeExpressions)
63+
);
5864
}
5965
}

0 commit comments

Comments
 (0)