$this->executeSearch($this->query), ]); } /** * Execute the search against each of the searchable models. */ protected function executeSearch(string $query): array { $query = Str::trim($query); $results = ['data' => [], 'total' => 0]; if (Str::length($query)) { $results['data'] = [ 'user' => collect(User::search($query)->raw()['hits']), 'mod' => collect(Mod::search($query)->raw()['hits']), ]; $results['total'] = $this->countTotalResults($results['data']); } $this->showDropdown = Str::length($query) > 0; $this->noResults = $results['total'] === 0 && $this->showDropdown; return $results; } /** * Count the total number of results across all models. */ protected function countTotalResults($results): int { return collect($results)->reduce(function ($carry, $result) { return $carry + $result->count(); }, 0); } /** * Clear the search query and hide the dropdown. */ public function clearSearch(): void { $this->query = ''; $this->showDropdown = false; $this->noResults = false; } }