Laravel-5, 关联角色与用户

Laravel-5, Associating a role with a user

好的,所以在这里我仍然像 Laravel 5 上的真正新手一样摆弄枢轴。

一切正常,但我需要将角色与用户相关联,可能有很多角色,因此我需要循环并找到正确的角色,如果我这样做 return 值为 true。

到目前为止一切正常,我有这个用于我的用户角色关系。

    public function roles()
    {       
        return $this->belongsToMany('App\Role');
    }

我创建了一个这样的新中间件:

public function handle($request, Closure $next)
    {

       if ( ! $request->user()->hasRole())
       {
          return redirect('/');
       }

       return $next($request);

    }

因此我需要在用户中创建 hasRole 以确认我的用户具有所需的角色。在这种情况下,可能有 7 个角色,其中一个是管理员,所以我需要循环查看他是否确实拥有该角色,这就是我被卡住的地方。

我需要按照

的方式在用户模型中添加一些东西
public function hasRole()
{
   foreach roles as role 
   find "Administrator" 
   if you do return true

   Otherwise return false
}

就我而言,我知道你的想法很差,我正在努力掌握 eloquent 但我正在努力。

谢谢

利用你所拥有的,你可以做如下事情:

改进 在 laravel 中挖掘集合 class 后,找到了更好的解决方案。

public function hasRole()
{
    return $this-roles->contains('name', 'admin')
}

原答案

public function hasRole() 
{
  return count($this->roles->filter(function($role) {
    return $role->name == 'admin';
  })) == 1;

}