Существует 3 модели: Doctor, Clinic, City. Каждому городу соотносится клиника (один ко многим), врач может работать в нескольких клиниках, поэтому для этих двух моделей установлена связь многие-ко-многим и создана pivot-таблица clinic_doctor
Таблица clinics
| id | title | city_id |
|----|-------|---------|
| | | |
Таблица cities
| id | name |
|----|------|
| | |
Таблица doctors
| id | full_name |
|----|-----------|
| | |
Таблица clinic_doctor
| clinic_id | doctor_id |
|-----------|-----------|
| | |
В
App\Models\Doctor.php
я описал отношение:
public function cities()
{
return $this->hasManyThrough(
City::class,
ClinicDoctor::class,
'doctor_id', // clinic_doctor table
'id', // cities table
'id',
'clinic_id', // clinic_doctor table
);
}
ClinicDoctor::class
это pivot-таблица
clinic_doctor
. Данный метод возвращает неправильное отношение. У врача я получаю список всех клиник где он работает, и из этих клиник я должен взять поле
city_id
вернуть модели городов с
id = city_id
, но текущий мой метод возвращает города, для которых
id = id
из таблицы клиник (id = clinics.id). Я пытался изменить в отношении
hasManyThrough
поле
id
на
city_id
, но никакого результата это не дало. Где я допускаю ошибку?