2016-12-26 75 views
0

我有以下的代碼,它基本上得到了降序排列的查詢結果,它是內部關係模型(一對多)TheNumbers的episodeNumber(許多)。PHP laravel sortBy to orderBy

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

我可以做同樣的事情,而無需使用sortByDesc,而是使用orderBy有更好的表現?

這將允許我分頁後。

+0

TheEpisode ::在哪裏( 「seriesID」,$ seriesID) - >排序依據( 'episodeNumber',' desc')。 - >獲得();試試這個...... –

+0

'episodeNumber'在'TheNumbers'裏面,它不存在於TheEpisode' – Coder

+0

裏面的關係函數(TheEpisode模型)中,爲episodeNumber執行orderBy()。 –

回答

0

不知道你的表是如何連接的,但你可以使用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);