2016-03-13 163 views
0

目前我的数据库表的定义如下:Laravel - 检查记录存在

site_roles - 包含不同的角色

site_user_roles - 将用户链接到许多角色

site_permission_modules - 包含不同的访问级别[例如。查看管理控制,禁止用户]

site_role_permissions - 链接的权限模块角色

我在laravel模型正确定义查询这些多对多的关系。在代码中,我想检查用户是否拥有与他链接的特定权限模块。

为了更好地理解,这里是我的模型,以及:

用户

public function SiteRoles() 
    { 
     return $this->belongsToMany('App\SiteRole', 'site_user_roles', 'users_id', 'site_roles_id'); 
    } 

SiteRole

public function Users() 
    { 
     return $this->belongsToMany('App\User', 'site_user_roles', 'site_roles_id', 'user_id'); 
    } 

    public function SitePermissionModules() 
    { 
     return $this->belongsToMany('App\SitePermissionModule', 'site_role_permissions', 'site_roles_id', 'site_permission_modules_id'); 
    } 

SitePermissionModule

public function SiteRoles() 
    { 
     return $this->belongsToMany('App\SiteRole', 'site_role_permissions', 'site_permission_modules_id', 'site_roles_id'); 
    } 

这是我目前所做的:

Auth::User()->SiteRoles()->with('SitePermissionModules')->get() 

的有()的关键字检索与每个角色相关联的权限的嵌套数组。

我需要检查用户是否有一个特定的权限模块链接到他。

什么是最好的laravel方式来做到这一点?

编辑:

基本上我只是问什么会是链2多对多关系的最佳途径。

回答

0
Auth::User()->SiteRoles()->with(['SitePermissionModules' => function ($query) { 
            $query->where('site_role_permissions','=','admin'); 
             //use where as per your requirment. 

}])->get(); 

Querying Relaionship