| 
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