Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Laravel按子级排序父级_Php_Laravel - Fatal编程技术网

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();