PHP Laravel按子级排序父级
我试着根据它们的数量对两集进行排序。这是我的代码:PHP Laravel按子级排序父级,php,laravel,Php,Laravel,我试着根据它们的数量对两集进行排序。这是我的代码: $neededEpisodes = SharedMethods::getAround($numbers); $nearEpisodes = TheEpisode::where("seriesID", $seriesID)->whereHas('TheNumbers', function($q) use($neededEpisodes) { $q->whereIn('episodeNumber', $ne
$neededEpisodes = SharedMethods::getAround($numbers);
$nearEpisodes = TheEpisode::where("seriesID", $seriesID)->whereHas('TheNumbers', function($q) use($neededEpisodes) {
$q->whereIn('episodeNumber', $neededEpisodes);
});
echo $nearEpisodes->get()->toJson();
这将输出以下结果:
"nearEpisodes": [{
"id": 16445,
"the_numbers": [{
"episodeID": 16445,
"episodeNumber": 208
}]
}, {
"id": 16487,
"the_numbers": [{
"episodeID": 16487,
"episodeNumber": 210
},{
"episodeID": 16487,
"episodeNumber": 211
}]
}]
问题是,_数的顺序应该相反,从210、211开始,然后是208
所以我的预期输出应该是id:16487,然后是16445
我应该如何构建雄辩的查询来实现这一点
我的新输出:
您可以使用以下收集方法:
$nearEpisodes = TheEpisode::where("seriesID", $seriesID)
->whereHas('TheNumbers', function($q) use($neededEpisodes) {
$q->whereIn('episodeNumber', $neededEpisodes);
})
->with(['TheNumbers' => function($q) use($neededEpisodes) {
$q->whereIn('episodeNumber', $neededEpisodes);
}])
->get();
$nearEpisodes = $nearEpisodes->sortByDesc(function ($item) {
return $item->the_numbers->max('episodeNumber');
})->values();
echo $nearEpisodes->toJson();
调用undefined方法illumb\Database\Query\Builder::sortBy(),如果使用get(),则不会出现错误,但结果仍按升序排列:(然后尝试使用
sortBy
。将sortByDesc
替换为sortBy
。然后重试。同样,没有任何更改。我已在查询中添加了with
,请检查是否有帮助。
$nearEpisodes = TheEpisode::where("seriesID", $seriesID)
->whereHas('TheNumbers', function($q) use($neededEpisodes) {
$q->whereIn('episodeNumber', $neededEpisodes);
})
->with(['TheNumbers' => function($q) use($neededEpisodes) {
$q->whereIn('episodeNumber', $neededEpisodes);
}])
->get();
$nearEpisodes = $nearEpisodes->sortByDesc(function ($item) {
return $item->the_numbers->max('episodeNumber');
})->values();
echo $nearEpisodes->toJson();