Skip to content

Commit 42ef493

Browse files
committed
keep the small refactoring
1 parent 62567cb commit 42ef493

File tree

2 files changed

+12
-21
lines changed

2 files changed

+12
-21
lines changed

src/Bridge/Doctrine/Orm/Filter/SearchFilter.php

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
8989
[$alias, $field, $associations] = $this->addJoinsForNestedProperty($property, $alias, $queryBuilder, $queryNameGenerator, $resourceClass);
9090
}
9191

92+
$caseSensitive = true;
93+
$strategy = $this->properties[$property] ?? self::STRATEGY_EXACT;
94+
95+
// prefixing the strategy with i makes it case insensitive
96+
if (0 === strpos($strategy, 'i')) {
97+
$strategy = substr($strategy, 1);
98+
$caseSensitive = false;
99+
}
100+
92101
$metadata = $this->getNestedMetadata($resourceClass, $associations);
93102

94103
if ($metadata->hasField($field)) {
@@ -104,15 +113,6 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
104113
return;
105114
}
106115

107-
$caseSensitive = true;
108-
$strategy = $this->properties[$property] ?? self::STRATEGY_EXACT;
109-
110-
// prefixing the strategy with i makes it case insensitive
111-
if (0 === strpos($strategy, 'i')) {
112-
$strategy = substr($strategy, 1);
113-
$caseSensitive = false;
114-
}
115-
116116
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $alias, $field, $values, $caseSensitive);
117117

118118
return;
@@ -143,21 +143,12 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
143143

144144
$associationAlias = $alias;
145145
$associationField = $field;
146-
$valueParameter = $queryNameGenerator->generateParameterName($associationField);
147146
if ($metadata->isCollectionValuedAssociation($associationField)) {
148147
$associationAlias = QueryBuilderHelper::addJoinOnce($queryBuilder, $queryNameGenerator, $alias, $associationField);
149148
$associationField = $associationFieldIdentifier;
150149
}
151150

152-
if (1 === \count($values)) {
153-
$queryBuilder
154-
->andWhere($queryBuilder->expr()->eq($associationAlias.'.'.$associationField, ':'.$valueParameter))
155-
->setParameter($valueParameter, $values[0]);
156-
} else {
157-
$queryBuilder
158-
->andWhere($queryBuilder->expr()->in($associationAlias.'.'.$associationField, ':'.$valueParameter))
159-
->setParameter($valueParameter, $values);
160-
}
151+
$this->addWhereByStrategy($strategy, $queryBuilder, $queryNameGenerator, $associationAlias, $associationField, $values, $caseSensitive);
161152
}
162153

163154
/**

tests/Bridge/Doctrine/Orm/Filter/SearchFilterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,10 +547,10 @@ public function provideApplyTestData(): array
547547
$filterFactory,
548548
],
549549
'mixed IRI and entity ID values for relations' => [
550-
sprintf('SELECT %s FROM %s %1$s INNER JOIN %1$s.relatedDummies relatedDummies_a1 WHERE %1$s.relatedDummy IN(:relatedDummy_p1) AND relatedDummies_a1.id = :relatedDummies_p2', $this->alias, Dummy::class),
550+
sprintf('SELECT %s FROM %s %1$s INNER JOIN %1$s.relatedDummies relatedDummies_a1 WHERE %1$s.relatedDummy IN(:relatedDummy_p1) AND relatedDummies_a1.id = :id_p2', $this->alias, Dummy::class),
551551
[
552552
'relatedDummy_p1' => [1, 2],
553-
'relatedDummies_p2' => 1,
553+
'id_p2' => 1,
554554
],
555555
$filterFactory,
556556
],

0 commit comments

Comments
 (0)