From 6ad131c7a9e7ead7f53e16b3a75d04415c0d8bf4 Mon Sep 17 00:00:00 2001 From: Michael-Macbook Date: Fri, 25 Apr 2025 20:45:21 +1200 Subject: [PATCH 1/4] Refactor 'like' operator handling in Terms filter for improved query logic --- src/Query/Scopes/Filters/Fields/Terms.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Query/Scopes/Filters/Fields/Terms.php b/src/Query/Scopes/Filters/Fields/Terms.php index 9b96f2ecc1..c9c8549325 100644 --- a/src/Query/Scopes/Filters/Fields/Terms.php +++ b/src/Query/Scopes/Filters/Fields/Terms.php @@ -36,7 +36,9 @@ public function apply($query, $handle, $values) $operator = $values['operator']; match ($operator) { - 'like' => $query->whereJsonContains($handle, $values['term']), + 'like' => $this->fieldtype->config('max_items') === 1 + ? $query->orWhere($handle, $values['term']) + : $query->whereJsonContains($handle, $values['term']), 'null' => $query->whereNull($handle), 'not-null' => $query->whereNotNull($handle), }; From 04f8d480d1a76fd86b830ae4dac53f0a1a036db5 Mon Sep 17 00:00:00 2001 From: Michael-Macbook Date: Fri, 25 Apr 2025 20:49:42 +1200 Subject: [PATCH 2/4] use 'where' instead of 'orWhere' --- src/Query/Scopes/Filters/Fields/Terms.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Query/Scopes/Filters/Fields/Terms.php b/src/Query/Scopes/Filters/Fields/Terms.php index c9c8549325..f8a477bf30 100644 --- a/src/Query/Scopes/Filters/Fields/Terms.php +++ b/src/Query/Scopes/Filters/Fields/Terms.php @@ -37,7 +37,7 @@ public function apply($query, $handle, $values) match ($operator) { 'like' => $this->fieldtype->config('max_items') === 1 - ? $query->orWhere($handle, $values['term']) + ? $query->where($handle, $values['term']) : $query->whereJsonContains($handle, $values['term']), 'null' => $query->whereNull($handle), 'not-null' => $query->whereNotNull($handle), From b9f4ff9518512a8abe482a2d30638cf5cc929d39 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Tue, 29 Apr 2025 11:24:51 +0100 Subject: [PATCH 3/4] formatting --- src/Query/Scopes/Filters/Fields/Terms.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Query/Scopes/Filters/Fields/Terms.php b/src/Query/Scopes/Filters/Fields/Terms.php index f8a477bf30..0f911e8452 100644 --- a/src/Query/Scopes/Filters/Fields/Terms.php +++ b/src/Query/Scopes/Filters/Fields/Terms.php @@ -37,8 +37,8 @@ public function apply($query, $handle, $values) match ($operator) { 'like' => $this->fieldtype->config('max_items') === 1 - ? $query->where($handle, $values['term']) - : $query->whereJsonContains($handle, $values['term']), + ? $query->where($handle, $values['term']) + : $query->whereJsonContains($handle, $values['term']), 'null' => $query->whereNull($handle), 'not-null' => $query->whereNotNull($handle), }; From b15562469a574376b85cdfad9bf5f82016c6e071 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Tue, 29 Apr 2025 11:34:42 +0100 Subject: [PATCH 4/4] Bring back the "like" operator --- src/Query/Scopes/Filters/Fields/Terms.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Query/Scopes/Filters/Fields/Terms.php b/src/Query/Scopes/Filters/Fields/Terms.php index 0f911e8452..b7f63b7138 100644 --- a/src/Query/Scopes/Filters/Fields/Terms.php +++ b/src/Query/Scopes/Filters/Fields/Terms.php @@ -37,7 +37,7 @@ public function apply($query, $handle, $values) match ($operator) { 'like' => $this->fieldtype->config('max_items') === 1 - ? $query->where($handle, $values['term']) + ? $query->where($handle, 'like', "%{$values['term']}%") : $query->whereJsonContains($handle, $values['term']), 'null' => $query->whereNull($handle), 'not-null' => $query->whereNotNull($handle),