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

标签 php eloquent roles laravel-5 middleware

好吧,所以在这里我仍然像 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);

    }

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

我需要在用户模型中添加一些内容

public function hasRole()
{
   foreach roles as role 
   find "Administrator" 
   if you do return true

   Otherwise return false
}

就我而言,我知道无论你怎么理解,我都很可怜,我正在努力掌握 Eloquent 技巧,但我正在做到这一点。

谢谢

最佳答案

利用你所拥有的,你可以做类似的事情:

改进 在深入研究 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;

}

关于php - Laravel-5,将角色与用户关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157616/

相关文章:

php - MySQL:使用 Select 和 Limit 更新行

Laravel Eloquent 关系第三级

带有角色标签的 ansible import_playbook

mysql - orderByRaw 删除 Laravel 4.2 中的部分查询

spring-boot - 用户角色 Spring Data Rest Spring security

c# - Asp.net 网站速度非常慢,因为每个页面都有角色 checkin

php - 允许在 php 邮件中使用德语变音符号?

php - php 中的 GST 号码验证

php - 如何将PHP代码插入数据库表中?

mysql - 拉拉维尔 5.3 : Syntax error or access violation: 1463 Non-grouping field 'distance' is used in HAVING clause