【问题标题】:Querying two many to many relationships查询两个多对多关系
【发布时间】:2014-10-09 04:27:09
【问题描述】:

我有一个用户表:

id | name

我有一个角色表:

id | role

我有一个 user_role 数据透视表:

user_id | role_id

我有一个权限表:

id | permission

我有一个 role_permissions 数据透视表:

role_id | permission_id

一个用户属于多个角色。

一个角色属于多个用户。

一个权限属于多个角色。

如何查询权限表,提供权限和用户 ID。我基本上想查找用户是否具有特定权限。

到目前为止我有:

$data = Permission::whereHas('roles', function($q){
        //do I need another whereHas here linking roles and users?
    })->where('permission', 'edit')->get();

【问题讨论】:

    标签: laravel laravel-4 eloquent


    【解决方案1】:

    最好的方法是加入表格。目前框架中并没有很好的方式来实现这种链式关系。

    Permission::query()
        ->join('permission_role', 'permission_role.role_id', '=', 'permissions.id')
        ->join('roles', 'roles.id', '=', 'permission_role.role_id')
        ->join('role_user', 'role_user.user_id', '=', 'roles.id')
        ->join('users', 'users.id', '=', 'role_user.user_id')
        ->where('users.whatever', '=', 'something')
        ->where('permissions.permission', '=', 'edit')
        ->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2018-11-06
      • 1970-01-01
      • 2021-10-03
      • 2018-11-02
      • 2015-10-26
      • 2011-08-08
      相关资源
      最近更新 更多