我有这个表结构
用户- 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;
}
关于这个特殊问题的更多信息在这篇博文