我在角色和用户模型之间创建了多对多关系。他们有一个名为 role_user
的数据透视表。它由id
、user_id
和role_id
组成。
我的用户模型有这样的关系:
public function roles(){
return $this->belongsToMany('App\Role');
}
还有这个函数:
public function hasRole($role){
return null !== $this->roles()->where("name", $role)->first();
}
我正在尝试创建我的 PostPolicy 类,然后再检查用户是管理员还是 super 管理员
public function before(User $user){
if($user->hasRole('Admin') || $user->hasRole('Super Admin') ){
return true ;
}
}
该函数返回 false 响应,但我使用具有管理员角色的用户登录。
我的角色表:
id
name
description
created_at
updated_at
用户:
id
name
email
email_verified_at
password
remember_token
created_at
updated_at
最佳答案
当我编写您的代码并附加角色时,它就开始工作了:
$user->roles()->attach($roleName);
我还在 PostPolicy@before
方法的 if
下添加了 return false
- 这里正在工作 example
关于php - 我的多对多关系没有返回所需的用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55365919/