如何在 Laravel Eloquent 中排序关联模型的结果?
Laravel Eloquent 带有 **orderBy()** 方法,可用于对模型的结果进行排序。我们将使用如下所示的 Users 表 -

让我们创建一个名为 **user_roles** 的新表,其中包含以下数据 -

示例 1
以下示例展示了如何使用 **orderBy** 对结果进行排序。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Str; //use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $users = User::orderBy('name', 'ASC')->take(10)->get(); foreach ($users as $user) { echo $user->name."<br/>"; } } }
在上面的示例中,使用的查询如下所示 -
SELECT name from users order by name ASC limit 10;
MySQL 中的输出如下所示 -

输出
在 Laravel 中浏览器中查看输出时 -

示例 2
在本例中,我们将了解如何通过连接两个表来使用 order by。使用的表是 **users** 和 **user_roles** 表。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; class UserController extends Controller{ public function index() { $users = User::join('user_roles', 'users.id', '=', 'user_roles.user_id') ->orderBy('users.name', 'ASC') ->select('users.*') ->paginate(10); foreach ($users as $user) { echo $user->name."<br/>"; } } }
输出
上述代码的输出如下所示 -

上述示例的查询为 -
SELECT u.* From users u INNER JOIN user_roles ur ON u.id = ur.user_id ORDER BY u.name ASC;
MySQL 中的输出为 -

示例 3
另一个使用 **orderBy** 以降序获取记录的示例如下所示 -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Str; //use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $users = User::orderBy('id', 'desc')->select('users.*') ->take(10)->get(); foreach ($users as $user) { echo $user->name."<br/>"; } } }
输出
上述代码的输出为 -

示例 4
使用 orderBy 对名称进行排序以降序获取记录
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Str; //use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $users = User::orderBy('name', 'desc')->select('users.*') ->take(10)->get(); foreach ($users as $user) { echo $user->name."<br/>"; } } }
输出
上述代码的输出为 -

广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP