2016-12-26 73 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);