按字母顺序对集合进行排序

时间:2018-09-11 07:32:53

标签: php laravel

我正在尝试按字母顺序打印我的收藏集。这是我在控制器中尝试过的方法:

public function listForCategories(Category $category)
    {
        return $category->subcategories->sortBy('title');
    }

但这不是对我的输出进行排序:/请帮助!

4 个答案:

答案 0 :(得分:3)

尝试return $category->subcategories->orderBy('title');

答案 1 :(得分:2)

$ category-> subcategories-> sortBy('title')-> values()-> all();

我不知道确切的层次结构,但是您可以根据需要使用该解决方案:

sortBy方法按给定键对集合进行排序。排序后的集合保留原始数组键

因此在此示例中,我们将使用values方法将键重置为连续编号的索引:

这里是一个例子:

$ category = collect([    ['title'=>'Desk','price'=> 200],

['title'=>'Chair','price'=> 100],

['标题'=>'书架','价格'=> 150],

]);

$ sorted = $ category-> sortBy('title')-> values()-> all();

结果-: [ ['title'=>'Bookcase','price'=> 150],

['title'=>'Chair','price'=> 100],

['title'=>'Desk','price'=> 200], ]

答案 2 :(得分:1)

sortBy方法对内部字段进行排序,但是,它保留了原始键,因此,如果要获得排序后的值,请在对values()方法进行排序后调用采集。这样,您就可以返回排序后的集合。

return $category->subcategories->sortBy('title')->values()->all();

答案 3 :(得分:1)

从数据库中检索orderBy时,请尝试使用它们(我假设是这样做的)

public function listForCategories(Category $category)
{
    return $category->subcategories()->orderBy('title')->get();
}