Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Laravel 当我在数组中得到结果时,如何按值排序?_Laravel_Laravel 5_Laravel 5.2 - Fatal编程技术网

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