Answers:
您实际上可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以正确的顺序返回所有结果。
如果仍要使用all(),因为它返回对象的集合,则仍可以使用sortBy(在集合级别)而不是orderBy(在查询级别)。
升序
$results = Project::all()->sortBy("name");
降序
$results = Project::all()->sortByDesc("name");
查看有关集合的文档以了解更多详细信息。
orderBy
在查询级别使用相比,对此的广泛使用会带来不利影响吗?
sortBy()
印象深刻的orderBy()
是,对集合进行排序的过程是在Laravel Engine(在PHP中)中进行的,而在数据库中完成了。当然,在几乎所有可能的情况下,数据库都将更快,并且随着数据集的增加,性能上的差异也会随之增加。我很想听听其他人对此的想法。
Laravel 5.4向查询构建器添加了orderByDesc()方法:
$results = Project::orderByDesc('name')->get();
做这个:
$results = Project::orderBy('name')->get();
请勿这样做:
$results = Project::all()->sortBy('name');
为什么? 简而言之,第一种方法比第二种方法快。
查看sortBy
Eloquent 的方法:http : //laravel.com/docs/eloquent
注意,您可以执行以下操作:
$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::orderBy('name')
->get();
例:
$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();
在该示例中,数据按“ where”过滤,并带来大于20的记录,并按从高到低的顺序带来orderBy目录。