@@ -47,15 +47,29 @@ private function translateClassName($value)
47
47
return $ value ;
48
48
}
49
49
50
+ private function buildWhere (QueryBuilder $ query , FilterElement $ filter ):string {
51
+ $ value = $ filter ->getValue ();
52
+
53
+ if (is_array ($ value )) {
54
+ $ where_components = [];
55
+
56
+ foreach ($ value as $ val ) {
57
+ $ where_components [] = str_replace (":class_name " , $ this ->translateClassName ($ val ), $ this ->where );
58
+ }
59
+
60
+ return implode (sprintf (" %s " , $ filter ->getSameFieldOp ()), $ where_components );
61
+ }
62
+ return str_replace (":class_name " , $ this ->translateClassName ($ filter ->getValue ()), $ this ->where );
63
+ }
64
+
50
65
/**
51
66
* @param QueryBuilder $query
52
67
* @param FilterElement $filter
53
68
* @return QueryBuilder
54
69
*/
55
70
public function apply (QueryBuilder $ query , FilterElement $ filter ): QueryBuilder
56
71
{
57
- $ where = str_replace (":class_name " , $ this ->translateClassName ($ filter ->getValue ()), $ this ->where );
58
- return $ query ->andWhere ($ where );
72
+ return $ query ->andWhere ($ this ->buildWhere ($ query , $ filter ));
59
73
}
60
74
61
75
/**
@@ -65,8 +79,7 @@ public function apply(QueryBuilder $query, FilterElement $filter): QueryBuilder
65
79
*/
66
80
public function applyOr (QueryBuilder $ query , FilterElement $ filter ): string
67
81
{
68
- $ where = str_replace (":class_name " , $ this ->translateClassName ($ filter ->getValue ()), $ this ->where );
69
- return $ where ;
82
+ return $ this ->buildWhere ($ query , $ filter );
70
83
}
71
84
72
85
}
0 commit comments