我正在尝试按字母顺序打印我的收藏集。这是我在控制器中尝试过的方法:
public function listForCategories(Category $category)
{
return $category->subcategories->sortBy('title');
}
但这不是对我的输出进行排序:/请帮助!
答案 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();
}