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

时间:2015-03-20 00:52:27

标签: php eloquent roles laravel-5 middleware

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

一切正常,但是我需要将角色与用户关联起来,可能会有很多角色,所以我需要循环找到正确的角色,如果我确实返回了真值。

到目前为止,一切正常,我的用户与角色关系。

    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个角色,其中一个是管理员,所以我需要循环查看他是否确实有角色,这就是我被困住的地方。

我需要按照

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

   Otherwise return false
}

我可怜但是我知道你得到了这个想法,我正在努力去掌握雄辩,但我到了那里。

由于

1 个答案:

答案 0 :(得分:2)

使用你拥有的东西,你可以做类似的事情:

<强>提高 在laravel中挖掘集合类之后,找到了更好的解决方案。

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

原始答案

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

}
相关问题