2017-06-02 34 views
2

我在我的Laravel应用程序中有单个用户雄辩模型:委托与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我可以在集合中看到很多空对象。

+0

您应该添加,将动态连接相关模型 –

+0

那怎么办了'manages'关系?你能详细说明吗? –

+0

耶是每个用户的多个角色。并且我使用具有多重关系的透视表role_user表的委托。角色的用户表中没有属性。 –

回答

0

这是我设法使它工作的方式。但是我不能够得到的关系对象,而不是我越来越有作用联系

用户的集合
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; 
    }); 


} 
+0

如果能更有效地解决问题,我会接受其他答案。等待到此为止,这可能会帮助别人。 –