好吧,在这里我仍然像一个真正的Laravel 5新手一样摆弄枢轴。
一切都很好,但我需要将一个角色与一个用户关联起来,可能有很多角色,所以我需要循环并找到合适的角色,如果我真的返回值true。
到目前为止,一切都正常工作,我的用户到角色关系就是这样。
public function roles()
{
return $this->belongsToMany('App'Role');
}
我创建了一个像这样的新中间件:
public function handle($request, Closure $next)
{
if ( ! $request->user()->hasRole())
{
return redirect('/');
}
return $next($request);
}
因此,我需要在User中创建hasRole,以确认我的用户具有所需的角色。在这种情况下,可能有7个角色,其中一个是管理员,所以我需要循环浏览,看看他是否有这个角色,这就是我的困境。
我需要在用户模型中加入一些类似的东西
public function hasRole()
{
foreach roles as role
find "Administrator"
if you do return true
Otherwise return false
}
我很穷,我知道无论你怎么想,我都在努力掌握雄辩,但我正在做到。
感谢
使用您所拥有的,您可以执行以下操作:
改进在对laravel中的collection类进行挖掘后,找到了一个更好的解决方案。
public function hasRole()
{
return $this-roles->contains('name', 'admin')
}
原始答案
public function hasRole()
{
return count($this->roles->filter(function($role) {
return $role->name == 'admin';
})) == 1;
}