From 6c96c932e0b6fd5bdf292013f23f4ff590a679bc Mon Sep 17 00:00:00 2001 From: Tariq Hussein Date: Wed, 2 Oct 2019 00:04:01 +0100 Subject: [PATCH] Fixes #1877 Replace getIdsForUsername() with subquery instead. (#1878) --- src/User/Search/Gambit/FulltextGambit.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/User/Search/Gambit/FulltextGambit.php b/src/User/Search/Gambit/FulltextGambit.php index a41821693..64b8fff3b 100644 --- a/src/User/Search/Gambit/FulltextGambit.php +++ b/src/User/Search/Gambit/FulltextGambit.php @@ -30,15 +30,25 @@ class FulltextGambit implements GambitInterface $this->users = $users; } + /** + * @param $searchValue + * @return \Illuminate\Database\Eloquent\Builder + */ + private function getUserSearchSubQuery($searchValue) + { + return $this->users + ->query() + ->select('id') + ->where('username', 'like', "{$searchValue}%"); + } + /** * {@inheritdoc} */ - public function apply(AbstractSearch $search, $bit) + public function apply(AbstractSearch $search, $searchValue) { - $users = $this->users->getIdsForUsername($bit, $search->getActor()); - - $search->getQuery()->whereIn('id', $users); - - $search->setDefaultSort(['id' => $users]); + $search->getQuery() + ->whereIn('id', + $this->getUserSearchSubQuery($searchValue)); } }