php - 委托(delegate) Laravel - 具有条件角色的 Eloquent 查询

标签 php mysql laravel entrust

我的 Laravel 应用程序中有单用户 Eloquent 模型:

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

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

  public function company(){

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

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

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

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

   }

假设在 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 对象,而是获取具有管理员角色的用户集合

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;
    });


}

关于php - 委托(delegate) Laravel - 具有条件角色的 Eloquent 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44328159/

相关文章:

php 日期选择器 Web 浏览器

javascript - 值没有从一个动态下拉框传递到 php 中的另一个动态下拉框

php - 如何将多个可重复字段保存为数据库中的数组?

php - Web 开发发展太快了吗?

linkedin 的 PHP oauth

php - Laravel:Mediable 迁移错误语法错误或访问冲突:1071 指定的 key 太长;最大 key 长度为 1000 字节

mysql 'Rlike' 无法正常工作

php - 尝试在 json 数组中搜索

php - 在 Php laravel 中审计用户操作

php - 在 Eloquent ORM 中左加入 Where