From 095cd0ebcde299af3f0b8b5f62cf958b616c5579 Mon Sep 17 00:00:00 2001 From: Obayda Alesawi <32073999+Algeneralo@users.noreply.github.com> Date: Mon, 7 Aug 2023 17:01:29 +0300 Subject: [PATCH] Enhancement: Multi-Tag Filtering and Search Functionality (#1367) * Implement functionality to allow filtering based on multiple tags * Fix styleci * Update src/Storage/EntryModel.php Co-authored-by: Mior Muhammad Zaki * Update src/Storage/EntryModel.php Co-authored-by: Mior Muhammad Zaki * Update src/Storage/EntryModel.php Co-authored-by: Mior Muhammad Zaki --------- Co-authored-by: Taylor Otwell Co-authored-by: Mior Muhammad Zaki --- src/Storage/EntryModel.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Storage/EntryModel.php b/src/Storage/EntryModel.php index beafd536b..c22a57911 100644 --- a/src/Storage/EntryModel.php +++ b/src/Storage/EntryModel.php @@ -116,8 +116,17 @@ protected function whereBatchId($query, EntryQueryOptions $options) protected function whereTag($query, EntryQueryOptions $options) { $query->when($options->tag, function ($query, $tag) { - return $query->whereIn('uuid', function ($query) use ($tag) { - $query->select('entry_uuid')->from('telescope_entries_tags')->whereTag($tag); + $tags = collect(explode(',', $tag))->map(fn ($tag) => trim($tag)); + + if ($tags->isEmpty()) { + return $query; + } + + return $query->whereIn('uuid', function ($query) use ($tags) { + $query->select('entry_uuid')->from('telescope_entries_tags') + ->whereIn('entry_uuid', function ($query) use ($tags) { + $query->select('entry_uuid')->from('telescope_entries_tags')->whereIn('tag', $tags->all()); + }); }); });