diff --git a/src/Doctrine/Orm/Extension/ParameterExtension.php b/src/Doctrine/Orm/Extension/ParameterExtension.php index 17d02352fd4..8d20754da8a 100644 --- a/src/Doctrine/Orm/Extension/ParameterExtension.php +++ b/src/Doctrine/Orm/Extension/ParameterExtension.php @@ -14,6 +14,7 @@ namespace ApiPlatform\Doctrine\Orm\Extension; use ApiPlatform\Doctrine\Common\Filter\ManagerRegistryAwareInterface; +use ApiPlatform\Doctrine\Common\Filter\PropertyAwareFilterInterface; use ApiPlatform\Doctrine\Common\ParameterValueExtractorTrait; use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter; use ApiPlatform\Doctrine\Orm\Filter\FilterInterface; @@ -68,19 +69,21 @@ private function applyFilter(QueryBuilder $queryBuilder, QueryNameGeneratorInter $filter->setManagerRegistry($this->managerRegistry); } - if ($filter instanceof AbstractFilter && !$filter->getProperties()) { + if ($filter instanceof PropertyAwareFilterInterface) { + $properties = []; $propertyKey = $parameter->getProperty() ?? $parameter->getKey(); - - if (str_contains($propertyKey, ':property')) { - $extraProperties = $parameter->getExtraProperties()['_properties'] ?? []; - foreach (array_keys($extraProperties) as $property) { - $properties[$property] = $parameter->getFilterContext(); + if ($filter instanceof AbstractFilter) { + $properties = $filter->getProperties() ?? []; + + if (str_contains($propertyKey, ':property')) { + $extraProperties = $parameter->getExtraProperties()['_properties'] ?? []; + foreach (array_keys($extraProperties) as $property) { + $properties[$property] = $parameter->getFilterContext(); + } } - } else { - $properties = [$propertyKey => $parameter->getFilterContext()]; } - $filter->setProperties($properties ?? []); + $filter->setProperties($properties + [$propertyKey => $parameter->getFilterContext()]); } $filter->apply($queryBuilder, $queryNameGenerator, $resourceClass, $operation,