@@ -146,25 +146,23 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
146
146
*/
147
147
148
148
// let's do a very simple query if we don't need the complex one (99% of time)
149
- if (\in_array ($ metadata ->getTypeOfField ($ field ), ['string ' , 'integer ' ], true )) {
149
+ $ type = $ metadata ->getTypeOfField ($ field );
150
+ if (\in_array ($ type , ['string ' , 'integer ' ], true )) {
150
151
$ queryBuilder
151
152
->andWhere (sprintf ($ wrapCase ('%s.%s ' ).' IN (:%s) ' , $ alias , $ field , $ valueParameter ))
152
153
->setParameter ($ valueParameter , $ caseSensitive ? $ values : array_map ('strtolower ' , $ values ));
153
154
} else {
154
155
$ inQuery = [];
155
- $ args = [];
156
- $ type = $ metadata ->getTypeOfField ($ field );
156
+ $ nbArgs = \count ($ values );
157
+
158
+ // QueryBuilder->setParameters() reset current parameters set, so we need to merge them all together
159
+ $ parameters = $ queryBuilder ->getParameters ();
157
160
158
- for ($ i = 0 ; $ i < \count ( $ values ) ; ++$ i ) {
161
+ for ($ i = 0 ; $ i < $ nbArgs ; ++$ i ) {
159
162
$ inQuery [] = ':filterproperty ' .$ i ;
160
- $ args [] = new Parameter ('filterproperty ' .$ i , $ caseSensitive ? $ values [$ i ] : strtolower ($ values [$ i ]), $ type );
163
+ $ parameters -> add ( new Parameter ('filterproperty ' .$ i , $ caseSensitive ? $ values [$ i ] : strtolower ($ values [$ i ]), $ type) );
161
164
}
162
165
163
- // setParameters reset current parameters set, so we need to merge with getParameters()
164
- $ parameters = new ArrayCollection ($ args );
165
- foreach ($ queryBuilder ->getParameters () as $ p ) {
166
- $ parameters ->add ($ p );
167
- }
168
166
$ queryBuilder
169
167
->andWhere (sprintf ($ wrapCase ('%s.%s ' ).' IN (%s) ' , $ alias , $ field , implode (', ' , $ inQuery )))
170
168
->setParameters ($ parameters );
@@ -220,10 +218,10 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
220
218
*
221
219
* @throws InvalidArgumentException If strategy does not exist
222
220
*/
223
- protected function addWhereByStrategy (string $ strategy , QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ alias , string $ field , $ value , bool $ caseSensitive )
221
+ protected function addWhereByStrategy (string $ strategy , QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ alias , string $ field , $ value , bool $ caseSensitive, ClassMetadata $ metadata = null )
224
222
{
225
223
// check if we have metadata
226
- if (( $ metadata = func_get_arg ( 7 )) instanceof ClassMetadata) {
224
+ if ($ metadata instanceof ClassMetadata) {
227
225
$ type = $ metadata ->getTypeOfField ($ field );
228
226
} else {
229
227
@trigger_error ('addWhereByStrategy() will require argument ClassMetadata in 3.0. ' , E_USER_DEPRECATED );
0 commit comments