委托 Laravel - Eloquent 具有条件角色的查询
Entrust with Laravel - Eloquent queries with conditional roles
我的 Laravel 应用程序中有单个用户 eloquent 模型:
我将使用 Entrust 作为角色。
用户可以有多个角色。
我已经设法让用户拥有多个具有相同 eloquent 模型的角色 User 像这样:
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
我可以在集合中看到许多空对象。
这就是我设法让它发挥作用的方法。但是我无法获取 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;
});
}
我的 Laravel 应用程序中有单个用户 eloquent 模型:
我将使用 Entrust 作为角色。 用户可以有多个角色。
我已经设法让用户拥有多个具有相同 eloquent 模型的角色 User 像这样:
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
我可以在集合中看到许多空对象。
这就是我设法让它发挥作用的方法。但是我无法获取 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;
});
}