Laravel-5,将角色与用户关联


Laravel-5, Associating a role with a user

好吧,在这里我仍然像一个真正的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;
}