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

$results = Project::all();

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

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

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


当前回答

试试这个:

$categories     =   Category::all()->sortByDesc("created_at");

其他回答

此外,为了支持前一种答案,还可以将其作为第二个参数添加,从而按降序desc或升序asc进行排序。

$results = Project::orderBy('created_at', 'desc')->get();

在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::orderBy('name')->get();

这将以适当的顺序返回所有结果。

试试这个:

$categories     =   Category::all()->sortByDesc("created_at");

这样做:

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

为什么? 因为它很快!排序在数据库中完成。

不要这样做:

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

为什么? 因为它很慢。首先,这些行从数据库中加载,然后加载到Laravel的Collection类中,最后在内存中排序。