我被一项简单的任务困住了。 我只需要安排这次通话的结果
$results = Project::all();
其中Project是一个模型。我试过了
$results = Project::all()->orderBy("name");
但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?
我被一项简单的任务困住了。 我只需要安排这次通话的结果
$results = Project::all();
其中Project是一个模型。我试过了
$results = Project::all()->orderBy("name");
但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?
当前回答
如果您仍然想使用all(),您仍然可以使用sortBy(在集合级别)而不是orderBy(在查询级别),因为它返回一个对象集合。
升序排序
$results = Project::all()->sortBy("name");
降序排列
$results = Project::all()->sortByDesc("name");
请查看关于集合的文档以获得更多详细信息。
https://laravel.com/docs/5.1/collections
其他回答
这样做:
$results = Project::orderBy('name')->get();
为什么? 因为它很快!排序在数据库中完成。
不要这样做:
$results = Project::all()->sortBy('name');
为什么? 因为它很慢。首先,这些行从数据库中加载,然后加载到Laravel的Collection类中,最后在内存中排序。
如果您仍然想使用all(),您仍然可以使用sortBy(在集合级别)而不是orderBy(在查询级别),因为它返回一个对象集合。
升序排序
$results = Project::all()->sortBy("name");
降序排列
$results = Project::all()->sortByDesc("name");
请查看关于集合的文档以获得更多详细信息。
https://laravel.com/docs/5.1/collections
实际上,您可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以适当的顺序返回所有结果。
此外,为了支持前一种答案,还可以将其作为第二个参数添加,从而按降序desc或升序asc进行排序。
$results = Project::orderBy('created_at', 'desc')->get();
2017年更新
Laravel 5.4在查询生成器中添加了orderByDesc()方法:
$results = Project::orderByDesc('name')->get();