laravel模型方法来检查像hasRole(['admin','superadmin'


laravel model method to check a condition like hasRole(['admin','superadmin')?

我正在尝试laravel授权,我需要在用户模型上检查条件并返回布尔值的方法!例如呢?

$user->hasRole(['superadmin']); // should return true/false

,模型中:

class User extends Model{
    /*****
    *****
    *****/
    public function roles()
    {
        return $this->hasMany('App'Role');
    }
    public function hasRole($roles)
    {
        // some validation and return boolean
    }
}

我如何通过laravel模型做到这一点?有办法吗?

public function hasRole($roles)
{
    return !$this->roles->pluck('role_column')->intersect($roles)->isEmpty();
}

别忘了修改'role_column'

由于您有一个字符串数组,并且我假设您的角色有名称,因此您可以使用一个简单的sql查询来完成此操作。

public function hasRole($roles) {
    return $this->roles->whereIn('role', $strings)->exists();
}