PHP laravel sortBy в orderBy

У меня есть следующий код, который в основном получает результат запроса в порядке убывания для episodeNumber (many), который находится внутри модели отношений (один ко многим)TheNumbers.

$nearEpisodes = TheEpisode::where("seriesID", $seriesID)->get()->sortByDesc(function ($item) {
    return $item->TheNumbers->max('episodeNumber');
})->values();

Могу ли я сделать то же самое без использования sortByDesc, а вместо этого использовать orderByдля лучшей производительности?

Это позволит мне пролистать его позже.

1 ответ

  1. Не уверен в том, как связаны таблицы, но можно использовать joinдля разбиения модели на страницы:

    TheEpisode::where("seriesID", $seriesID)
            ->join('TheNumbers', 'seriesID.id', '=', 'TheNumbers.TheEpisode_id')
            ->select(DB::raw('TheEpisode.*, MAX(episodeNumber) as `max_episodeNumber`'))
            ->groupBy('TheEpisode_id')
            ->orderBy('max_episodeNumber', 'desc')
            ->paginate(10);