我被一项简单的任务困住了。 我只需要安排这次通话的结果
$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
其他回答
在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();
而你需要的结果日期描述
$results = Project::latest('created_at')->get();
注意,你可以这样做:
$results = Project::select('name')->orderBy('name')->get();
这将生成如下查询:
"SELECT name FROM proyect ORDER BY 'name' ASC"
在一些应用程序中,当数据库没有优化,查询更复杂,你需要防止在完成SQL中生成ORDER BY,你可以这样做:
$result = Project::select('name')->get();
$result = $result->sortBy('name');
$result = $result->values()->all();
现在是php对结果进行排序。
查看Eloquent的sortBy方法:http://laravel.com/docs/eloquent
实际上,您可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以适当的顺序返回所有结果。