拉拉维尔 - 检查记录是否存在


Laravel - checking record existence

目前我的数据库表定义如下:

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();

查询关系