Laravel HasManyThrough关系与相关表上的Where条件



我想根据医院(医生工作的地方(统计城市的验证医生。我在城市模式中创建了hasManythrough关系,当我在刀片文件中使用此关系时,它会向所有医生提供(已验证和未验证(。我只想找经过验证的医生。这是我的数据库结构:

数据库

医生(列(--id--名称--is_verified-

医院列(--id--city_id--name---

医生_医院(列(--id--hospital_id--doctor_id

城市模式中的关系

public function cityDoctors()
{
return $this->hasManyThrough(
'AppDoctorHospital',
'AppHospital',
'city_id',
'hospital_id'
);
}

在控制器中

$cities=City::with('cityDoctors')->whereHas('cityDoctors')->get();

在刀片文件中我使用

@foreach($cities as $city)
<li><a href="{{route('typeSearch',['type' => 'city', 'id' => $city->id])}}">
<strong>{{$city->cityDoctors->count()}}</strong>{{$city->name}}</a>
</li>
@endforeach

它显示所有医生的计数(已验证和未验证(。如何只获取城市的认证医生

这就像多对多关系,而不是多掷。

无论如何,您可以在热切加载语句(with(中使用whereHas

$cities = City::with(['cityDoctors' => function ($query) {
$query->whereHas('doctor', function ($query) {
$query->where('is_verified', true);
});
}])->has('cityDoctors')->get();

确保CityDoctor和Doctor型号之间的关系名称

相关内容

  • 没有找到相关文章

最新更新