|
14 | 14 | namespace ApiPlatform\Doctrine\Orm\Extension; |
15 | 15 |
|
16 | 16 | use ApiPlatform\Doctrine\Common\Filter\ManagerRegistryAwareInterface; |
| 17 | +use ApiPlatform\Doctrine\Common\Filter\PropertyAwareFilterInterface; |
17 | 18 | use ApiPlatform\Doctrine\Common\ParameterValueExtractorTrait; |
18 | 19 | use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter; |
19 | 20 | use ApiPlatform\Doctrine\Orm\Filter\FilterInterface; |
@@ -68,19 +69,21 @@ private function applyFilter(QueryBuilder $queryBuilder, QueryNameGeneratorInter |
68 | 69 | $filter->setManagerRegistry($this->managerRegistry); |
69 | 70 | } |
70 | 71 |
|
71 | | - if ($filter instanceof AbstractFilter && !$filter->getProperties()) { |
| 72 | + if ($filter instanceof PropertyAwareFilterInterface) { |
| 73 | + $properties = []; |
72 | 74 | $propertyKey = $parameter->getProperty() ?? $parameter->getKey(); |
73 | | - |
74 | | - if (str_contains($propertyKey, ':property')) { |
75 | | - $extraProperties = $parameter->getExtraProperties()['_properties'] ?? []; |
76 | | - foreach (array_keys($extraProperties) as $property) { |
77 | | - $properties[$property] = $parameter->getFilterContext(); |
| 75 | + if ($filter instanceof AbstractFilter) { |
| 76 | + $properties = $filter->getProperties() ?? []; |
| 77 | + |
| 78 | + if (str_contains($propertyKey, ':property')) { |
| 79 | + $extraProperties = $parameter->getExtraProperties()['_properties'] ?? []; |
| 80 | + foreach (array_keys($extraProperties) as $property) { |
| 81 | + $properties[$property] = $parameter->getFilterContext(); |
| 82 | + } |
78 | 83 | } |
79 | | - } else { |
80 | | - $properties = [$propertyKey => $parameter->getFilterContext()]; |
81 | 84 | } |
82 | 85 |
|
83 | | - $filter->setProperties($properties ?? []); |
| 86 | + $filter->setProperties($properties + [$propertyKey => $parameter->getFilterContext()]); |
84 | 87 | } |
85 | 88 |
|
86 | 89 | $filter->apply($queryBuilder, $queryNameGenerator, $resourceClass, $operation, |
|
0 commit comments