我有一个应用程序,用户可以在不同的网站上拥有不同的角色。我创建了一个数据透视表user_access_levels
,其中包含id
,user_id
,site_id
,access_level_id
。首先,我在hasMany
模型中为UserAccessLevel
创建了User
关系,并且我能够使用此功能来规范用户可以访问的内容
@if(Auth::user()->userAccessLevels[0]['access_level_id'] == '1')@endif
但我已经意识到用户只限制用户而非网站。
因此,我将User
模型中的关系更改为belongsToMany
,现在将其连接到AccessLevel
模型。 Laravel能够获取枢轴,我可以看到用户拥有的多个访问级别。如果我做
dd(Auth::user()->userAccessLevels);
我可以看到访问级别如下:
Collection {#254 ▼
#items: array:3 [▼
0 => UserAccessLevel {#255 ▶}
1 => UserAccessLevel {#256 ▶}
2 => UserAccessLevel {#257 ▶}
]
}
我需要的是一种访问当前用户与当前站点的特定记录的方法。基本上我想要的是:假设 4 记录 A,B,C,D 以及具有 1访问权限的用户只能访问记录 A和B ,有权访问 2 的用户可以访问 A,B和C 以及有权访问的用户 3 可以访问所有记录。然后我有一个名为 John 的用户,可以 1 访问 网站 以及 3 访问 网站II 。如果john访问 网站 ,我如何确保他只能访问记录A和B,但如果他访问 site II < / strong>他可以访问所有记录。
我目前的做法是,它为所有网站的用户使用最高访问级别。