目前我的数据库表定义如下:
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');
}
站点角色
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');
}
站点权限模块
public function SiteRoles()
{
return $this->belongsToMany('App'SiteRole', 'site_role_permissions', 'site_permission_modules_id', 'site_roles_id');
}
这是我目前所做的:
Auth::User()->SiteRoles()->with('SitePermissionModules')->get()
with() 关键字检索与每个角色关联的权限的嵌套数组。
我需要检查用户是否有链接到他的特定权限模块。
最好的方法是什么?
编辑:
基本上,我只是在问将 2 多对多关系联系起来的最佳方式是什么。
Auth::User()->SiteRoles()->with(['SitePermissionModules' => function ($query) {
$query->where('site_role_permissions','=','admin');
//use where as per your requirment.
}])->get();
查询关系