Laravel 当我在数组中得到结果时,如何按值排序?
我得到了所有标签,其外观如下:Laravel 当我在数组中得到结果时,如何按值排序?,laravel,laravel-5,laravel-5.2,Laravel,Laravel 5,Laravel 5.2,我得到了所有标签,其外观如下: "testeng" => 0 "testeng1" => 5 我要做的是,按值排序,第一个是值为5的。有什么建议我该怎么做 $tags = ATags::with('articles')->whereHas('language',function($query) use($current_language_id){ $query->where('id','=',$current_language_id); })->get();
"testeng" => 0
"testeng1" => 5
我要做的是,按值排序,第一个是值为5的。有什么建议我该怎么做
$tags = ATags::with('articles')->whereHas('language',function($query) use($current_language_id){
$query->where('id','=',$current_language_id);
})->get();
$count_tag = [];
foreach($tags as $tag){
$count_tag[$tag->name] = $tag->articles->count();
}
您可以将其用作:
arsort-按相反顺序对数组排序并保持索引关联
或
您可以使用直接在查询中对结果进行排序,如下所示:
$tags = ATags::with('articles')
->whereHas('language',function($query) use($current_language_id){
$query->where('id','=',$current_language_id);
})
->withCount('articles')
->orderBy('articles_count', 'desc')
->take(5)
->get();
从文件中
如果要计算关系中的结果数,则
实际上,您可以使用with count
方法加载它们,该方法将
在生成的模型上放置一个{relation}\u count
列
您可以使用集合的或方法对结果排序,如下所示:
$tags = ATags::with('articles')->whereHas('language',function($query) use($current_language_id) {
$query->where('id','=',$current_language_id);
})
->get()
->sortByDesc(function($tag) { // <---- sorting it via article's count
return $tag->articles->count();
})
->take(5); // <----- fetch largest 5 from collection
$tags=ATags::with('articles')->whereHas('language',function($query)use($current\u language\u id){
$query->where('id','=',$current\u language\u id);
})
->得到()
->sortByDesc(function($tag){//“testing”=>0,“testing1”=>5
…?$count\u tag[$tag->name]=$tag->articles->count();你不认为使用orderBy
比使用arsort()
更好吗?在我的示例中如何使用它?只需执行arsort($count tag)
在您的foreach
之后,您的$count\u标记将被更新。只需再问一个问题…我可以在哪里设置限制以便只显示5条记录,以便只显示5条数字最大的记录?您可以在get()
方法之前设置限制,如-->limit(5)->get()
。希望这能有所帮助!我试过了,但当我这样做时,订购发生了变化……我没有在最大的订单上获得第一名的记录number@None-因此,在这种情况下,您可以在sortByDesc()
方法之后使用take()
方法对这样的集合-get()->sortByDesc(…)->take(5)
就是这样..tnx:)
$tags = ATags::with('articles')->whereHas('language',function($query) use($current_language_id) {
$query->where('id','=',$current_language_id);
})
->get()
->sortByDesc(function($tag) { // <---- sorting it via article's count
return $tag->articles->count();
})
->take(5); // <----- fetch largest 5 from collection