Php Laravel:相关表中的Orderby和
这是我的模型Php Laravel:相关表中的Orderby和,php,laravel,sql-order-by,relation,laravel-eloquent,Php,Laravel,Sql Order By,Relation,Laravel Eloquent,这是我的模型 使用者 角色 这些模型之间的关系是多对多的 我想创建如下查询: return User::with('roles')->orderBy('roles.id')->paginate(); return User::with(['roles' => function ($query) { $query->orderBy('id', 'desc'); }])->paginate(); return User::with('r
- 使用者
- 角色
return User::with('roles')->orderBy('roles.id')->paginate();
return User::with(['roles' => function ($query) {
$query->orderBy('id', 'desc');
}])->paginate();
return User::with('roles')
->join('roles', 'user.id', '=', 'roles.user_id')
->orderBy('roles.id', 'desc')
->paginate();
我不想加入,因为我为每个模型都创建了一个基类。我也不想在
get
之后使用orderBy
,因为它必须加载我的所有数据,然后我应该能够对其进行排序和分页。所以这不是一个好主意 您可以尝试以下方法:
return User::with('roles')->orderBy('roles.id')->paginate();
User::where('role_id','!=','0')->orderBy('role_id','DESC')->paginate(10);
return User::with(['roles' => function ($query) {
$query->orderBy('id', 'desc');
}])->paginate();
return User::with('roles')
->join('roles', 'user.id', '=', 'roles.user_id')
->orderBy('roles.id', 'desc')
->paginate();
但这只会对“急切加载”属性进行排序,但如果您有兴趣使用join,则可以使用以下内容:
return User::with('roles')->orderBy('roles.id')->paginate();
return User::with(['roles' => function ($query) {
$query->orderBy('id', 'desc');
}])->paginate();
return User::with('roles')
->join('roles', 'user.id', '=', 'roles.user_id')
->orderBy('roles.id', 'desc')
->paginate();
在这种情况下,您可以轻松地使用您主要关心的分页
希望这有帮助。如果没有加入,这是不可能的(AFAIK)。通常最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读。