@@ -84,7 +84,7 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
84
84
[$ alias , $ field , $ associations ] = $ this ->addJoinsForNestedProperty ($ property , $ alias , $ queryBuilder , $ queryNameGenerator , $ resourceClass );
85
85
}
86
86
87
- $ values = $ this ->normalizeValues ((array ) $ value , $ property );
87
+ $ values = $ this ->normalizeValues ((array )$ value , $ property );
88
88
if (null === $ values ) {
89
89
return ;
90
90
}
@@ -112,7 +112,8 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
112
112
return ;
113
113
}
114
114
115
- $ this ->addWhereByStrategy ($ strategy , $ queryBuilder , $ queryNameGenerator , $ alias , $ field , $ doctrineTypeField , $ values , $ caseSensitive );
115
+ $ valueParameter = $ queryNameGenerator ->generateParameterName ($ field );
116
+ $ this ->addWhereByStrategy ($ strategy , $ queryBuilder , $ queryNameGenerator , $ alias , $ field , $ doctrineTypeField , $ values , $ caseSensitive , $ valueParameter );
116
117
}
117
118
118
119
// metadata doesn't have the field, nor an association on the field
@@ -136,6 +137,7 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
136
137
return ;
137
138
}
138
139
140
+ $ valueParameter = $ queryNameGenerator ->generateParameterName ($ field );
139
141
if ($ metadata ->isCollectionValuedAssociation ($ field )) {
140
142
$ associationAlias = QueryBuilderHelper::addJoinOnce ($ queryBuilder , $ queryNameGenerator , $ alias , $ field );
141
143
$ associationField = $ associationFieldIdentifier ;
@@ -144,18 +146,17 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
144
146
$ associationField = $ field ;
145
147
}
146
148
147
- $ this ->addWhereByStrategy ($ strategy , $ queryBuilder , $ queryNameGenerator , $ associationAlias , $ associationField , $ doctrineTypeField , $ values , $ caseSensitive );
149
+ $ this ->addWhereByStrategy ($ strategy , $ queryBuilder , $ queryNameGenerator , $ associationAlias , $ associationField , $ doctrineTypeField , $ values , $ caseSensitive, $ valueParameter );
148
150
}
149
151
150
152
/**
151
153
* Adds where clause according to the strategy.
152
154
*
153
155
* @throws InvalidArgumentException If strategy does not exist
154
156
*/
155
- protected function addWhereByStrategy (string $ strategy , QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ alias , string $ field , $ fieldType , array $ values , bool $ caseSensitive )
157
+ protected function addWhereByStrategy (string $ strategy , QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ alias , string $ field , $ fieldType , array $ values , bool $ caseSensitive, string $ valueParameter )
156
158
{
157
159
$ wrapCase = $ this ->createWrapCase ($ caseSensitive );
158
- $ valueParameter = $ queryNameGenerator ->generateParameterName ($ field );
159
160
160
161
if (self ::STRATEGY_EXACT !== $ strategy && 1 !== \count ($ values )) {
161
162
$ this ->logger ->notice ('Invalid filter ignored ' , [
@@ -174,28 +175,28 @@ protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuild
174
175
->setParameter ($ valueParameter , $ values [0 ], $ fieldType );
175
176
} else {
176
177
$ queryBuilder
177
- ->andWhere (sprintf ($ wrapCase ('%s.%s ' ). ' IN (:%s) ' , $ alias , $ field , $ valueParameter ))
178
+ ->andWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' IN (:%s) ' , $ alias , $ field , $ valueParameter ))
178
179
->setParameter ($ valueParameter , $ caseSensitive ? $ values : array_map ('strtolower ' , $ values ));
179
180
}
180
181
break ;
181
182
case self ::STRATEGY_PARTIAL :
182
183
$ queryBuilder
183
- ->andWhere (sprintf ($ wrapCase ('%s.%s ' ). ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
184
+ ->andWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
184
185
->setParameter ($ valueParameter , $ values [0 ], $ fieldType );
185
186
break ;
186
187
case self ::STRATEGY_START :
187
188
$ queryBuilder
188
- ->andWhere (sprintf ($ wrapCase ('%s.%s ' ). ' LIKE ' . $ wrapCase ('CONCAT(:%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
189
+ ->andWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT(:%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
189
190
->setParameter ($ valueParameter , $ values [0 ], $ fieldType );
190
191
break ;
191
192
case self ::STRATEGY_END :
192
193
$ queryBuilder
193
- ->andWhere (sprintf ($ wrapCase ('%s.%s ' ). ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s) ' ), $ alias , $ field , $ valueParameter ))
194
+ ->andWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s) ' ), $ alias , $ field , $ valueParameter ))
194
195
->setParameter ($ valueParameter , $ values [0 ], $ fieldType );
195
196
break ;
196
197
case self ::STRATEGY_WORD_START :
197
198
$ queryBuilder
198
- ->andWhere (sprintf ($ wrapCase ('%1$s.%2$s ' ). ' LIKE ' . $ wrapCase ('CONCAT(:%3$s, \'%% \') ' ). ' OR ' . $ wrapCase ('%1$s.%2$s ' ). ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%3$s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
199
+ ->andWhere (sprintf ($ wrapCase ('%1$s.%2$s ' ) . ' LIKE ' . $ wrapCase ('CONCAT(:%3$s, \'%% \') ' ) . ' OR ' . $ wrapCase ('%1$s.%2$s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%3$s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
199
200
->setParameter ($ valueParameter , $ values [0 ], $ fieldType );
200
201
break ;
201
202
default :
@@ -244,7 +245,7 @@ protected function getType(string $doctrineType): string
244
245
return 'float ' ;
245
246
}
246
247
247
- if (\defined (DBALType::class. '::DATE_IMMUTABLE ' )) {
248
+ if (\defined (DBALType::class . '::DATE_IMMUTABLE ' )) {
248
249
switch ($ doctrineType ) {
249
250
case DBALType::DATE_IMMUTABLE :
250
251
case DBALType::TIME_IMMUTABLE :
0 commit comments