Model's函数返回Undefined变量role


Model's function returns Undefined variable: role

我有这个表结构

用户
  • id

角色
  • id

role_user

  • id
  • role_id
  • user_id

我在User模型中添加了一个功能,该功能将检查Authenticated用户的角色。但是我得到它返回这个错误:

定义变量:role

//User.php
public function hasRole($role = null)
{
    $hasRole = false;
    $hasRole = !$this->roles->filter(function($item) {
        return $item->role == $role;
    })->isEmpty();
    return $hasRole;
}

那么我可以像这样使用into比如在过滤器

if(Auth::user()->hasRole('encoder')) {
    //...
}

在PHP中,默认情况下,函数不能访问函数外声明的变量。

该变量不能从闭包中访问

public function hasRole($role = null)
{
    $hasRole = false;
    $hasRole = !$this->roles->filter(function($item) {
        return $item->role == $role;
    })->isEmpty();            ^^^^^
    return $hasRole;
}

可以使用use关键字,它将一个变量传递给函数:

public function hasRole($role = null)
{
    $hasRole = false;
    $hasRole = !$this->roles->filter(function($item) use($role) {
        return $item->role == $role;
    })->isEmpty();
    return $hasRole;
}

关于这个特殊问题的更多信息在这篇博文