Skip to content

Commit 9f82c5a

Browse files
committed
feat(mongodb): handle aggregation for PartialSearchFilter
1 parent d065380 commit 9f82c5a

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/Doctrine/Odm/Filter/PartialSearchFilter.php

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,28 @@ final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilt
3131
public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
3232
{
3333
$parameter = $context['parameter'];
34-
$value = $parameter->getValue();
35-
36-
// TODO: handle nested properties
3734
$property = $parameter->getProperty();
38-
$escapedValue = preg_quote($value, '/');
39-
40-
$aggregationBuilder
41-
->match()
42-
->field($property)
43-
->equals(new Regex($escapedValue, 'i'));
35+
$values = (array) $parameter->getValue();
36+
37+
if (1 === \count($values)) {
38+
$escapedValue = preg_quote((string) $values[0], '/');
39+
$aggregationBuilder
40+
->match()
41+
->field($property)
42+
->equals(new Regex($escapedValue, 'i'));
43+
44+
return;
45+
}
46+
47+
$match = $aggregationBuilder->match();
48+
foreach ($values as $value) {
49+
$escapedValue = preg_quote((string) $value, '/');
50+
51+
$match->addOr(
52+
$match->expr()
53+
->field($property)
54+
->equals(new Regex($escapedValue, 'i'))
55+
);
56+
}
4457
}
4558
}

0 commit comments

Comments
 (0)