我被一项简单的任务困住了。 我只需要安排这次通话的结果
$results = Project::all();
其中Project是一个模型。我试过了
$results = Project::all()->orderBy("name");
但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?
我被一项简单的任务困住了。 我只需要安排这次通话的结果
$results = Project::all();
其中Project是一个模型。我试过了
$results = Project::all()->orderBy("name");
但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?
当前回答
查看Eloquent的sortBy方法:http://laravel.com/docs/eloquent
其他回答
在Laravel Eloquent中,你必须创建像下面这样的查询,它将从DB中获得所有数据,你的查询是不正确的:
$results = Project::all()->orderBy("name");
你必须这样使用它:
$results = Project::orderBy('name')->get();
默认情况下,您的数据是升序的,但您也可以以以下方式使用orderBy:
//---Ascending Order
$results = Project::orderBy('name', 'asc')->get();
//---Descending Order
$results = Project::orderBy('name', 'desc')->get();
查看Eloquent的sortBy方法:http://laravel.com/docs/eloquent
一个有趣的事情是多重顺序:
根据laravel文档:
DB::table('users')
->orderBy('priority', 'desc')
->orderBy('email', 'asc')
->get();
这意味着laravel将根据优先级属性对结果进行排序。当它完成时,它将根据内部电子邮件以相同的优先级排序结果。
编辑:
正如@HedayatullahSarwary所说,推荐使用Eloquent而不是QueryBuilder。当然,我不鼓励使用QueryBuilder,我们都知道每个都有自己的用例。
无论如何,为什么我用QueryBuilder写了一个答案?正如我们在雄辩的文献中看到的:
您可以将每个Eloquent模型看作一个强大的查询构建器,允许您流畅地查询与模型关联的数据库表。
BTWS上面带有eloquent的代码应该是这样的:
Project::orderBy('priority', 'desc')
->orderBy('email', 'asc')
->get();
实际上,您可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以适当的顺序返回所有结果。
2017年更新
Laravel 5.4在查询生成器中添加了orderByDesc()方法:
$results = Project::orderByDesc('name')->get();