$results = Project::all();
其中Project是一个模型。我试过了
Project
$results = Project::all()->orderBy("name");
但这并没有起作用。从表中获取所有数据并对其进行排序的更好方法是什么?
查看Eloquent的sortBy方法:http://laravel.com/docs/eloquent
sortBy
实际上,您可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以适当的顺序返回所有结果。
此外,为了支持前一个答案,它也可以通过添加任意一个作为第二个参数,以降序desc或升序asc排序。
desc
asc
$results = Project::orderBy('created_at', 'desc')->get();
如果您仍然想使用all(),您仍然可以使用sortBy(在集合级别)而不是orderBy(在查询级别),因为它返回一个对象集合。
升序排序
$results = Project::all()->sortBy("name");
降序排列
$results = Project::all()->sortByDesc("name");
请查看关于集合的文档以获得更多详细信息。
https://laravel.com/docs/5.1/collections < a href = " https://laravel.com/docs/5.1/collections " > < / >
Laravel 5.4在查询生成器中添加了orderByDesc()方法:
$results = Project::orderByDesc('name')->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对结果进行排序。
这样做:
<强>为什么? 因为它是快!排序是在数据库中完成的
不要这样做:
$results = Project::all()->sortBy('name');
<强>为什么? 因为它是慢。首先,这些行从数据库中加载,然后加载到Laravel的Collection类中,最后在内存中排序
你的指示需要打电话去取,因为它要带记录和目录
$results = Project::orderBy('name') ->get();
例子:
$results = Result::where ('id', '>=', '20') ->orderBy('id', 'desc') ->get();
在本例中,数据通过"where"并带来大于20条的记录,并按从高到低的顺序订购derby目录。
试试这个:
$categories = Category::all()->sortByDesc("created_at");
一个有趣的事情是多重顺序:
根据laravel文档:
DB::table('users') ->orderBy('priority', 'desc') ->orderBy('email', 'asc') ->get();
这意味着laravel将根据priority属性对结果进行排序。当它完成时,它将根据内部的email对相同的priority排序。
priority
email
编辑:
正如@HedayatullahSarwary所说,推荐使用Eloquent而不是QueryBuilder。当然,我不鼓励使用QueryBuilder,我们都知道每个都有自己的用例。
无论如何,为什么我用QueryBuilder写了一个答案?正如我们在有说服力的文件中看到的:
您可以将每个Eloquent模型看作一个强大的查询构建器,允许您流畅地查询与模型关联的数据库表。
BTWS上面带有eloquent的代码应该是这样的:
Project::orderBy('priority', 'desc') ->orderBy('email', 'asc') ->get();
在Laravel Eloquent中,你必须创建像下面这样的查询,它将从DB中获得所有数据,你的查询是不正确的:
你必须这样使用它:
默认情况下,你的数据是< >强劲提升< / >强顺序,但你也可以通过以下方式使用< >强orderBy < / >强:
//---Ascending Order $results = Project::orderBy('name', 'asc')->get(); //---Descending Order $results = Project::orderBy('name', 'desc')->get();