Eloquent查询不返回whereHas的预期结果

时间:2017-07-18 17:55:30

标签: laravel eloquent laravel-5.4

目前的关系:

  • 诊所 hasMany 顾问
  • 顾问 belongsToMany 待遇(数据透视表关系)

诊所可能没有顾问,顾问可能没有治疗方法。我只想返回has顾问,其中has治疗,其中包含与$treatment_id匹配的治疗(因此has存在检查)的诊所。

当前尝试(返回0结果):

clinic::whereHas('consultants.treatments', function ($query) use ($treatment_id) {
                $query->where('treatment_id', $treatment_id);
            })
        ->paginate(10);

我觉得我需要在whereHas函数中whereHas来首先确定顾问是否有治疗方法,但是,如果这个逻辑是正确的,我该如何在函数内处理它。

我期待返回3个结果,但目前它是0。

我怎样才能做到这一点?非常感谢,。

1 个答案:

答案 0 :(得分:0)

因为它有很多,所以应该是:

Clinic::whereHas('consultants.treatments', function ($query) use ($treatment_id) {
        $query->where('id', $treatment_id);
    })
    ->paginate(10);