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

标签 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();
}

我正在尝试创建我的 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/

相关文章:

php - $string[i] 不返回 i :th character

php - 如何正确运行需要大量处理的查询而不会出错

php - .htaccess 所有分页的通用规则

mysql - 从右表中获取所有行 - Eloquent Laravel

php - 如何将 PHP 和 MySQL 与 while 和 foreach 循环一起使用?

Laravel 列表与下拉列表的关系

php - 在 laravel 的自定义路径中创建模型

php - 具有可变参数的 Laravel 5.2 命名路由用法

Laravel 迁移添加外键的最佳方式

PHPExcel 按值搜索单元格