From fd11442a76bb03eb81ab497cda673a4f61e9922d Mon Sep 17 00:00:00 2001 From: Daniel Klabbers Date: Mon, 8 Nov 2021 16:46:15 +0100 Subject: [PATCH] optimize search query with join --- src/Api/Controllers/SearchController.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Api/Controllers/SearchController.php b/src/Api/Controllers/SearchController.php index e5459f9..dff81a6 100644 --- a/src/Api/Controllers/SearchController.php +++ b/src/Api/Controllers/SearchController.php @@ -98,10 +98,9 @@ class SearchController extends ListDiscussionsController }); $discussions = Discussion::query() - ->whereIn('id', $results->pluck('discussion_id')->filter()) - ->orWhereHas('posts', function ($query) use ($results) { - $query->whereIn('id', $results->pluck('most_relevant_post_id')); - }) + ->join('posts', 'posts.discussion_id', 'discussions.id') + ->whereIn('discussions.id', $results->pluck('discussion_id')->filter()) + ->orWhereIn('posts.id', $results->pluck('most_relevant_post_id')->filter()) ->get() ->each(function (Discussion $discussion) use ($results) { if (in_array($discussion->id, $results->pluck('discussion_id')->toArray())) {