Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的多对多关系不返回所需的用户角色_Php_Laravel - Fatal编程技术网

Php 我的多对多关系不返回所需的用户角色

Php 我的多对多关系不返回所需的用户角色,php,laravel,Php,Laravel,我在角色和用户模型之间创建了多对多关系。他们有一个名为role\u user的数据透视表。它由id、用户id和角色id组成 我的用户模型具有以下关系: public function roles(){ return $this->belongsToMany('App\Role'); } 这个功能是: public function hasRole($role){ return null !== $this->roles()->where("name", $rol

我在角色和用户模型之间创建了多对多关系。他们有一个名为
role\u user
的数据透视表。它由
id
用户id
角色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 ;
    }
}
该函数返回的响应为false,但是我与具有Admin角色的用户一起登录

我的角色表:

id
name
description
created_at
updated_at
用户:

id
name
email
email_verified_at
password
remember_token
created_at
updated_at

您是否在角色模型上设置了用户功能


我相信您必须同时具备这两种能力,才能使多对多在Laravel中正常工作。

当我编写代码并附加角色时,它就会开始工作:

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

我还在
中的
if
下添加
return false
PostPolicy@before
method)-这里正在工作

这个空间是偶然的吗?关于命名,我会将任何角色写为小写。我有一个角色模型的函数