Laravel:相关表格中的Orderby和

时间:2017-10-07 14:16:56

标签: php laravel sql-order-by relation laravel-eloquent

这是我的模特

  • 用户
  • 作用

这些模型之间的关系是多对多的。

我想创建这样的查询:

return User::with('roles')->orderBy('roles.id')->paginate();

我不想要join,因为我为每个模型创建了一个基类。我也不想在orderBy之后使用get因为它必须加载我的所有数据,之后我应该能够对它进行排序和分页。所以这不是一个好主意。

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

return User::with(['roles'  => function ($query) {
        $query->orderBy('id', 'desc');
    }])->paginate();

但是这只会订购热切的加载属性,但是如果你有兴趣使用join,你可以这样:

return User::with('roles')
    ->join('roles', 'user.id', '=', 'roles.user_id')
    ->orderBy('roles.id', 'desc')
    ->paginate();

在此,您可以轻松使用paginate,这是您最关心的问题。

希望这有帮助。

答案 1 :(得分:0)

User::where('role_id','!=','0')->orderBy('role_id','DESC')->paginate(10);