*/ public function excerptSearch(string $keywords, int $count): array { return [ 'songs' => self::getTopResults($this->songRepository->search($keywords), $count) ->map(static fn (Song $song): string => $song->id), 'artists' => self::getTopResults($this->artistRepository->search($keywords), $count) ->map(static fn (Artist $artist): int => $artist->id), 'albums' => self::getTopResults($this->albumRepository->search($keywords), $count) ->map(static fn (Album $album): int => $album->id), ]; } /** @return Collection|array */ private static function getTopResults(Builder $query, int $count): Collection { return $query->take($count)->get(); } /** @return Collection|array */ public function searchSongs(string $keywords): Collection { return $this->songRepository ->search($keywords) ->get() ->map(static fn (Song $song): string => $song->id); // @phpstan-ignore-line } }