首页 > 解决方案 > Laravel Eloquent:whereHas 涉及多个表的关系

问题描述

我正在做一个 Laravel 项目。我正在使用 Eloquent 从数据库中查询数据。

我有以下型号

捐赠.php

class Donation extends Model
{
    public function donator()
    {
        return $this->belongsTo(User::class);
    }
}

用户.php

class User extends Model
{
   public function charities()
   {
       return $this->belongsToMany(Charity::class);
   }
}

慈善机构.php

class Charity extends Model
{
   public function donators()
   {
       return $this->belongsToMany(User::class);
   }
}

我正在写一个关于捐赠模型类的查询,我正在尝试查询这样的内容。查询只是抽象。

Donation::whereHas('donator.charities', function($query) {
     $query->whereIn('charities.id', [ 1,2,3,4 ])
})

正如您在 whereHas 中看到的,我将 where 子句应用于捐赠者的慈善机构。有可能这样做吗?我怎样才能做到这一点?

标签: laraveleloquent

解决方案


我希望这将是您问题的答案。

Donation::whereHas('donator',function($query){
  $query->whereHas('charities',function($query){
     $query->whereIn('id',[1,2,3,4]);
  })
})->get();

推荐阅读