diff --git a/src/Compat/FilterProcessor.php b/src/Compat/FilterProcessor.php index b6c9bdc..34e8468 100644 --- a/src/Compat/FilterProcessor.php +++ b/src/Compat/FilterProcessor.php @@ -63,9 +63,9 @@ public static function assemblePredicate(Filter\Condition $filter) $expression = $filter->getValue(); if (is_array($expression)) { - if ($filter instanceof Filter\UnEqual) { + if ($filter instanceof Filter\UnEqual || $filter instanceof Filter\Unlike) { return ["($column NOT IN (?) OR $column IS NULL)" => $expression]; - } elseif ($filter instanceof Filter\Equal) { + } elseif ($filter instanceof Filter\Equal || $filter instanceof Filter\Similar) { return ["$column IN (?)" => $expression]; } @@ -73,20 +73,20 @@ public static function assemblePredicate(Filter\Condition $filter) 'Unable to render array expressions with operators other than equal or not equal' ); } elseif ( - ($filter instanceof Filter\Equal || $filter instanceof Filter\Unequal) + ($filter instanceof Filter\Similar || $filter instanceof Filter\Unlike) && strpos($expression, '*') !== false ) { if ($expression === '*') { - return ["$column IS " . ($filter instanceof Filter\Equal ? 'NOT ' : '') . 'NULL']; - } elseif ($filter instanceof Filter\Unequal) { + return ["$column IS " . ($filter instanceof Filter\Similar ? 'NOT ' : '') . 'NULL']; + } elseif ($filter instanceof Filter\Unlike) { return ["($column NOT LIKE ? OR $column IS NULL)" => str_replace('*', '%', $expression)]; } else { return ["$column LIKE ?" => str_replace('*', '%', $expression)]; } - } elseif ($filter instanceof Filter\Unequal) { + } elseif ($filter instanceof Filter\Unequal || $filter instanceof Filter\Unlike) { return ["($column != ? OR $column IS NULL)" => $expression]; } else { - if ($filter instanceof Filter\Equal) { + if ($filter instanceof Filter\Similar || $filter instanceof Filter\Equal) { $operator = '='; } elseif ($filter instanceof Filter\GreaterThan) { $operator = '>';