我被一项简单的任务困住了。 我只需要安排这次通话的结果

$results = Project::all();

其中Project是一个模型。我试过了

$results = Project::all()->orderBy("name");

但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?


当前回答

你的指示需要打电话去取,因为它要带记录和目录

$results = Project::orderBy('name')
           ->get();

例子:

$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();

在本例中,根据“where”对数据进行过滤,并根据从高到低的顺序带来大于20的记录和orderBy目录。

其他回答

而你需要的结果日期描述

$results = Project::latest('created_at')->get();

你的指示需要打电话去取,因为它要带记录和目录

$results = Project::orderBy('name')
           ->get();

例子:

$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();

在本例中,根据“where”对数据进行过滤,并根据从高到低的顺序带来大于20的记录和orderBy目录。

2017年更新


Laravel 5.4在查询生成器中添加了orderByDesc()方法:

$results = Project::orderByDesc('name')->get();

如果您仍然想使用all(),您仍然可以使用sortBy(在集合级别)而不是orderBy(在查询级别),因为它返回一个对象集合。

升序排序

$results = Project::all()->sortBy("name");

降序排列

$results = Project::all()->sortByDesc("name");

请查看关于集合的文档以获得更多详细信息。

https://laravel.com/docs/5.1/collections

注意,你可以这样做:

$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对结果进行排序。