我的多对多关系没有返回所需的用户角色

时间:2019-03-26 20:45:29

标签: php laravel

我在角色模型和用户模型之间建立了多对多关系。他们有一个名为role_user的数据透视表。它由iduser_idrole_id组成。

我的用户模型具有以下关系:

public function roles(){
    return $this->belongsToMany('App\Role');
}

和此功能:

public function hasRole($role){
   return null !== $this->roles()->where("name", $role)->first();
}

在尝试检查用户是admin还是Super Admin之前,我正在尝试创建PostPolicy类。


public function before(User $user){
    if($user->hasRole('Admin') || $user->hasRole('Super Admin') ){
        return true ;
    }
}

该函数返回错误响应,但是我以具有管理员角色的用户身份登录。

我的角色表:

id
name
description
created_at
updated_at

用户:

id
name
email
email_verified_at
password
remember_token
created_at
updated_at

2 个答案:

答案 0 :(得分:2)

当我编写您的代码并附加角色时,它便开始起作用:

$user->roles()->attach($roleName); 

我还在return false方法的if下添加了PostPolicy@before)-这里工作正常example

答案 1 :(得分:0)

您还在角色模型上设置了用户功能吗?

我相信您必须同时具备许多功能才能在Laravel中正常工作。