From 7ae760334229ca97691b6de93f28ce7cbb6b000b Mon Sep 17 00:00:00 2001 From: Arseny Sysolyatin Date: Sun, 18 Mar 2018 20:30:44 +0100 Subject: [PATCH] Implement negation for tag gambit Closes #42. --- extensions/tags/src/Gambit/TagGambit.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/extensions/tags/src/Gambit/TagGambit.php b/extensions/tags/src/Gambit/TagGambit.php index 875df8e4a..f3bfdb761 100644 --- a/extensions/tags/src/Gambit/TagGambit.php +++ b/extensions/tags/src/Gambit/TagGambit.php @@ -42,15 +42,14 @@ class TagGambit extends AbstractRegexGambit { $slugs = explode(',', trim($matches[1], '"')); - // TODO: implement $negate - $search->getQuery()->where(function ($query) use ($slugs) { + $search->getQuery()->where(function ($query) use ($slugs, $negate) { foreach ($slugs as $slug) { if ($slug === 'untagged') { - $query->orWhereNotExists(function ($query) { + $query->orWhereExists(function ($query) { $query->selectRaw('1') ->from('discussions_tags') ->whereRaw('discussions.id = discussion_id'); - }); + }, !$negate); } else { $id = $this->tags->getIdForSlug($slug); @@ -59,7 +58,7 @@ class TagGambit extends AbstractRegexGambit ->from('discussions_tags') ->whereRaw('discussions.id = discussion_id') ->where('tag_id', $id); - }); + }, $negate); } } });