Php 如何根据多个whereHas条件获得用户

Php 如何根据多个whereHas条件获得用户,php,mysql,laravel,Php,Mysql,Laravel,我正在尝试根据多个whereHas条件获取用户。首先,我获取具有特定角色的用户,然后,我希望使用其他whereHas条件对该用户进行排序。我尝试了一些代码片段,但是我得到了所有具有不同角色的用户 我的模型 public function document() { return $this->hasOne(UserDocument::class,'user_id'); } public function portfolios() {

我正在尝试根据多个whereHas条件获取用户。首先,我获取具有特定角色的用户,然后,我希望使用其他whereHas条件对该用户进行排序。我尝试了一些代码片段,但是我得到了所有具有不同角色的用户

我的模型

  public function document()
    {
        return $this->hasOne(UserDocument::class,'user_id');
    }
    public function portfolios()
    {
        return $this->hasMany(Portfolio::class,'user_id');
    }
控制器

 public function index()
    {
        $data = User::whereHas("roles", function($q)
        { 
            $q->where("name", "Seller");
        })
        ->whereHas('portfolios',function($q){
            $q->where('status','Pending');
        })
        ->orWhereHas('document',function($s){
            $s->where('status','Pending');
        })
        ->get();
        
        dd($data);
        return view('admin.pendingapproval.index');
    }
我不明白怎么做。请帮帮我


谢谢

您在where has中使用了“or”,因此如果用户具有卖家角色,您将获得该用户 其拥有投资组合状态为挂起其拥有状态为挂起的文档

你应该像这样做:

  $data = User::whereHas("roles", function ($q) {
        $q->where("name", "Seller");
    })
        ->where(function ($query) {
            $query->whereHas('portfolios', function ($q) {
                $q->where('status', 'Pending');
            })->orWhereHas('document', function ($s) {
                $s->where('status', 'Pending');
            });
        })->get();
现在,您可以获得角色为“卖方”的用户 他有未决投资组合未决文件