我的laravel应用程序中有单个用户雄辩的模型:
我将使用委托担任角色。用户可以具有多个角色。
我已经设法使用户具有多个角色,具有相同的模型 user ,例如:
public function company(){
if($this->hasRole('admin')){
return $this->hasOne('AppCompany');
}elseif($this->hasRole('member')){
return $this->belongsTo('AppCompany');
}
}
如何在其他模型中处理此操作。
public function admin(){
$this->hasOne('AppUser'); //if has role admin
}
public function members(){
$this->hasMany('AppUser'); //if has role member
}
如何使此工作?
编辑我能够穿越用户并获得具有特定角色的相关用户,但它在集合中添加了空项目:
public function admin(){
return $this->hasOne('AppUser')->get()->map(function($u){
if($u->hasRole('admin') && $u != null){
return $u;
}
});
}
不过,我正在检查$u != null
,我可以在集合中看到许多空对象。
这就是我设法使其正常工作的方式。但是,我无法获得关系对象,而是我收集了具有角色管理的用户
public function admin(){
return $this->hasOne('AppUser')->get()->map(function($u){
if($u->hasRole('admin') && $u != null){
return $u;
}
})->reject(function ($u){
return $u == null;
});
}