From 53e9fb28970f55e6173f2f2061aec94c91c678b1 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Mon, 9 May 2022 03:26:44 +0200 Subject: [PATCH] Use wildcard character matches only for Filter\Similar or Filter\Unlike instances. --- src/Compat/FilterProcessor.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Compat/FilterProcessor.php b/src/Compat/FilterProcessor.php index b6c9bdc..041a8f3 100644 --- a/src/Compat/FilterProcessor.php +++ b/src/Compat/FilterProcessor.php @@ -65,7 +65,7 @@ public static function assemblePredicate(Filter\Condition $filter) if (is_array($expression)) { if ($filter instanceof Filter\UnEqual) { 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 = '>';