Прежде чем дать вам решение, я бы посоветовал вам переосмыслить дизайн вашей базы данных.
Может ли доктор принадлежать многим городам?Если нет, то вам не нужна сводная таблица doctor_country_city
.Также не стоит связывать доктора с городом и страной.Это довольно странно, потому что ваша база данных потенциально позволяет назначить доктора в Нью-Йорк, Франция.Город по определению принадлежит только одной стране.
Так что я бы предпочел отнести врача к городу, который относится к стране.
Dr. John Doe > New York > USA
Этоимеет больше смысла для меня.Таким образом, у вас будет еще одна таблица с именем countries
, и их модели будут иметь такие отношения:
class Doctor extends Model {
public function city() {
return $this->belongsTo(City::class);
}
}
class City extends Model {
public function country() {
return $this->belongsTo(Country::class);
}
public function doctors() {
return $this->hasMany(Doctor::class);
}
}
class Country extends Model {
public function cities() {
return $this->hasMany(City::class);
}
}
В одной стране может быть много городов, но один город принадлежит одной стране.В одном городе может быть много врачей, но врач принадлежит только одному городу.
Для получения дополнительной информации о красноречивых отношениях см. Документацию .
Переходя к вашему вопросу, яПредположим, что это запрос GET, где вы хотите получить всех врачей из данного города.Есть много способов достичь этого.
Вы можете использовать scope , используя whereHas
Eloquent.Этот метод позволяет фильтровать результаты вашей модели Доктора по значению в связанной таблице.
Я не хочу записывать весь код для вас.Я рекомендую вам прочитать документацию об инструментах, которые я перечислил выше.