@@ -188,29 +188,69 @@ protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuild
188188 switch ($ strategy ) {
189189 case null :
190190 case self ::STRATEGY_EXACT :
191- $ queryBuilder
192- ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' = ' . $ wrapCase (':%s ' ), $ alias , $ field , $ valueParameter ))
193- ->setParameter ($ valueParameter , $ value );
191+ if (is_array ($ value )) {
192+ foreach ($ value as $ i =>$ v ) {
193+ $ queryBuilder
194+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' = ' . $ wrapCase (':%s ' ), $ alias , $ field , $ valueParameter . $ i ))
195+ ->setParameter ($ valueParameter . $ i , $ v );
196+ }
197+ } else {
198+ $ queryBuilder
199+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' = ' . $ wrapCase (':%s ' ), $ alias , $ field , $ valueParameter ))
200+ ->setParameter ($ valueParameter , $ value );
201+ }
194202 break ;
195203 case self ::STRATEGY_PARTIAL :
196- $ queryBuilder
197- ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
198- ->setParameter ($ valueParameter , $ value );
204+ if (is_array ($ value )) {
205+ foreach ($ value as $ i =>$ v ) {
206+ $ queryBuilder
207+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s, \'%% \') ' ), $ alias , $ field , $ valueParameter . $ i ))
208+ ->setParameter ($ valueParameter . $ i , $ v );
209+ }
210+ } else {
211+ $ queryBuilder
212+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
213+ ->setParameter ($ valueParameter , $ value );
214+ }
199215 break ;
200216 case self ::STRATEGY_START :
201- $ queryBuilder
202- ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT(:%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
203- ->setParameter ($ valueParameter , $ value );
217+ if (is_array ($ value )) {
218+ foreach ($ value as $ i =>$ v ) {
219+ $ queryBuilder
220+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT(:%s, \'%% \') ' ), $ alias , $ field , $ valueParameter . $ i ))
221+ ->setParameter ($ valueParameter . $ i , $ v );
222+ }
223+ } else {
224+ $ queryBuilder
225+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT(:%s, \'%% \') ' ), $ alias , $ field , $ valueParameter ))
226+ ->setParameter ($ valueParameter , $ value );
227+ }
204228 break ;
205229 case self ::STRATEGY_END :
206- $ queryBuilder
207- ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s) ' ), $ alias , $ field , $ valueParameter ))
208- ->setParameter ($ valueParameter , $ value );
230+ if (is_array ($ value )) {
231+ foreach ($ value as $ i =>$ v ) {
232+ $ queryBuilder
233+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s) ' ), $ alias , $ field , $ valueParameter . $ i ))
234+ ->setParameter ($ valueParameter . $ i , $ v );
235+ }
236+ } else {
237+ $ queryBuilder
238+ ->orWhere (sprintf ($ wrapCase ('%s.%s ' ) . ' LIKE ' . $ wrapCase ('CONCAT( \'%% \', :%s) ' ), $ alias , $ field , $ valueParameter ))
239+ ->setParameter ($ valueParameter , $ value );
240+ }
209241 break ;
210242 case self ::STRATEGY_WORD_START :
211- $ queryBuilder
212- ->orWhere (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 ))
213- ->setParameter ($ valueParameter , $ value );
243+ if (is_array ($ value )) {
244+ foreach ($ value as $ i =>$ v ) {
245+ $ queryBuilder
246+ ->orWhere (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 . $ i ))
247+ ->setParameter ($ valueParameter . $ i , $ v );
248+ }
249+ } else {
250+ $ queryBuilder
251+ ->orWhere (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 ))
252+ ->setParameter ($ valueParameter , $ value );
253+ }
214254 break ;
215255 default :
216256 throw new InvalidArgumentException (sprintf ('strategy %s does not exist. ' , $ strategy ));
0 commit comments