From ec3ff5a8e15d90a3161b0d3c3a8c2fe9741d5387 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 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 = '>';