我坚持一项简单的任务。 我只需要订购来自此次电话会议的结果
$results = Project::all();
Project
是模型的地方。我试过这个
$results = Project::all()->orderBy("name");
但它没有用。从表中获取所有数据并获取它们的更好方法是哪种?
答案 0 :(得分:313)
您实际上可以在查询中执行此操作。
$results = Project::orderBy('name')->get();
这将以正确的顺序返回所有结果。
答案 1 :(得分:92)
如果你还想使用all(),你仍然可以使用sortBy(在集合级别)而不是orderBy(在查询级别),因为它返回了一个对象集合。
升序
$results = Project::all()->sortBy("name");
降序
$results = Project::all()->sortByDesc("name");
有关详细信息,请查看有关集合的文档。
答案 2 :(得分:24)
此外,只是为了支持以前的答案,可以通过添加第二个参数,以降序desc
或升序asc
顺序对其进行排序。
$results = Project::orderBy('created_at', 'desc')->get();
希望这有帮助。
答案 3 :(得分:10)
Laravel 5.4为查询构建器添加了orderByDesc()方法:
$results = Project::orderByDesc('name')->get();
答案 4 :(得分:8)
虽然您需要日期结果为desc
$results = Project::latest('created_at')->get();
答案 5 :(得分:4)
执行此操作
:$results = Project::orderBy('name')->get();
不要这样做:
$results = Project::all()->sortBy('name');
答案 6 :(得分:2)
查看Eloquent的sortBy
方法:http://laravel.com/docs/eloquent
答案 7 :(得分:1)
请注意,您可以这样做:
$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来订购结果。
答案 8 :(得分:0)
您的指令需要调用才能获得,因为它会带来记录并按目录排序
$results = Project::orderBy('name')
->get();
示例:
$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();
在该示例中,数据按“ where”过滤,并带来大于20的记录和按从高到低的顺序按orderBy目录。
答案 9 :(得分:0)
尝试一下:
$categories = Category::all()->sortByDesc("created_at");
答案 10 :(得分:0)
在 Laravel Eloquent 中,您必须创建如下查询,它将从数据库中获取所有数据,您的查询不正确:
$results = Project::all()->orderBy("name");
你必须这样使用它:
$results = Project::orderBy('name')->get();
或
$results = Project::orderBy('name', 'asc')->get();
或
$results = Project::orderBy('name', 'desc')->get();
答案 11 :(得分:-1)
一个有趣的事情是多个订单:
根据laravel docs:
DB::table('users')
->orderBy('priority', 'desc')
->orderBy('email', 'asc')
->get();
这意味着 Laravel 将根据 priority
属性对结果进行排序。完成后,它会在内部根据 priority
使用相同的 email
对结果进行排序。
编辑:
正如@HedayatullahSarwary 所说,建议优先使用 Eloquent 而不是 QueryBuilder。当然,我不鼓励使用 QueryBuilder,我们都知道每个都有自己的用例。
为什么我用 QueryBuilder 写了一个答案?正如我们在 eloquent documents 中看到的:
<块引用>您可以将每个 Eloquent 模型视为一个强大的查询构建器,允许您流畅地查询与模型关联的数据库表。
顺便说一句,上面带有 eloquent 的代码应该是这样的:
Project::orderBy('priority', 'desc')
->orderBy('email', 'asc')
->get();