0

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

数据库

医生(列) ---id--name---is_verified--

医院栏) ---id--city_id---name---

医生医院(列) --id--hospital_id---医生ID

城市模式中的关系

    public function cityDoctors()
    {
        return $this->hasManyThrough(
            'App\DoctorHospital',
            'App\Hospital',
            '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

它显示所有医生的数量(已验证和未验证)。 如何获得只有经过验证的城市医生?

4

1 回答 1

2

这就像多对多的关系,而不是多次抛出。

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

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

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

于 2020-10-02T07:48:34.880 回答