Skip to content

Commit 87b2b9f

Browse files
committed
fix(doctrine): properly set properties according to interface
`setProperties` belong to PropertyAwareFilterInterface in should be set regardless of the usage of AbstractFilter.
1 parent 99718d9 commit 87b2b9f

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/Doctrine/Orm/Extension/ParameterExtension.php

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
namespace ApiPlatform\Doctrine\Orm\Extension;
1515

1616
use ApiPlatform\Doctrine\Common\Filter\ManagerRegistryAwareInterface;
17+
use ApiPlatform\Doctrine\Common\Filter\PropertyAwareFilterInterface;
1718
use ApiPlatform\Doctrine\Common\ParameterValueExtractorTrait;
1819
use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter;
1920
use ApiPlatform\Doctrine\Orm\Filter\FilterInterface;
@@ -68,19 +69,21 @@ private function applyFilter(QueryBuilder $queryBuilder, QueryNameGeneratorInter
6869
$filter->setManagerRegistry($this->managerRegistry);
6970
}
7071

71-
if ($filter instanceof AbstractFilter && !$filter->getProperties()) {
72+
if ($filter instanceof PropertyAwareFilterInterface) {
73+
$properties = [];
7274
$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+
}
7883
}
79-
} else {
80-
$properties = [$propertyKey => $parameter->getFilterContext()];
8184
}
8285

83-
$filter->setProperties($properties ?? []);
86+
$filter->setProperties($properties + [$propertyKey => $parameter->getFilterContext()]);
8487
}
8588

8689
$filter->apply($queryBuilder, $queryNameGenerator, $resourceClass, $operation,

0 commit comments

Comments
 (0)