3

我的 Laravel 应用程序中有单个用户雄辩的模型:

我将使用 Entrust 作为角色。用户可以有多个角色。

我已经设法让用户拥有具有相同雄辩模型用户的多个角色,如下所示:

  public function company(){

    if($this->hasRole('admin')){

        return $this->hasOne('App\Company');

    }elseif($this->hasRole('member')){

           return $this->belongsTo('App\Company');
     }

   }

如何在其他模型中处理这个假设在公司模型中:

public function admin(){

    $this->hasOne('App\User'); //if has role admin
}

public function members(){

    $this->hasMany('App\User'); //if has role member
}

如何让这个工作?

编辑 我能够遍历用户并获取具有特定角色的相关用户,但它在集合中添加了空项目:

public function admin(){

    return $this->hasOne('App\User')->get()->map(function($u){

        if($u->hasRole('admin') && $u != null){

            return $u;

        }

    });


}

不过,我正在检查$u != null我可以在集合中看到许多空对象。

4

1 回答 1

0

这就是我设法使它工作的方法。但是,我无法获取 Relation 对象,而是获取了具有 Admin 角色的用户集合

public function admin(){

    return $this->hasOne('App\User')->get()->map(function($u){

        if($u->hasRole('admin') && $u != null){

            return $u;

        }

    })->reject(function ($u){
        return $u == null;
    });


}
于 2017-06-12T06:30:20.263 回答