@@ -63,30 +63,30 @@ public static function assemblePredicate(Filter\Condition $filter)
6363 $ expression = $ filter ->getValue ();
6464
6565 if (is_array ($ expression )) {
66- if ($ filter instanceof Filter \UnEqual) {
66+ if ($ filter instanceof Filter \UnEqual || $ filter instanceof Filter \Unlike ) {
6767 return ["( $ column NOT IN (?) OR $ column IS NULL) " => $ expression ];
68- } elseif ($ filter instanceof Filter \Equal) {
68+ } elseif ($ filter instanceof Filter \Equal || $ filter instanceof Filter \Similar ) {
6969 return ["$ column IN (?) " => $ expression ];
7070 }
7171
7272 throw new InvalidArgumentException (
7373 'Unable to render array expressions with operators other than equal or not equal '
7474 );
7575 } elseif (
76- ($ filter instanceof Filter \Equal || $ filter instanceof Filter \Unequal )
76+ ($ filter instanceof Filter \Similar || $ filter instanceof Filter \Unlike )
7777 && strpos ($ expression , '* ' ) !== false
7878 ) {
7979 if ($ expression === '* ' ) {
80- return ["$ column IS " . ($ filter instanceof Filter \Equal ? 'NOT ' : '' ) . 'NULL ' ];
81- } elseif ($ filter instanceof Filter \Unequal ) {
80+ return ["$ column IS " . ($ filter instanceof Filter \Similar ? 'NOT ' : '' ) . 'NULL ' ];
81+ } elseif ($ filter instanceof Filter \Unlike ) {
8282 return ["( $ column NOT LIKE ? OR $ column IS NULL) " => str_replace ('* ' , '% ' , $ expression )];
8383 } else {
8484 return ["$ column LIKE ? " => str_replace ('* ' , '% ' , $ expression )];
8585 }
86- } elseif ($ filter instanceof Filter \Unequal) {
86+ } elseif ($ filter instanceof Filter \Unequal || $ filter instanceof Filter \Unlike ) {
8787 return ["( $ column != ? OR $ column IS NULL) " => $ expression ];
8888 } else {
89- if ($ filter instanceof Filter \Equal) {
89+ if ($ filter instanceof Filter \Similar || $ filter instanceof Filter \ Equal) {
9090 $ operator = '= ' ;
9191 } elseif ($ filter instanceof Filter \GreaterThan) {
9292 $ operator = '> ' ;
0 commit comments