Как правильно получать связанные данные в Yii2?

В Б.Д. есть таблицы `doctors` и `clinics`
Упрощенно: (пишу только поля, которые нужны для Сабжа...)

Таблица clinics: id, name (клиники)
Таблица doctors: id, name (доктора)
Таблица clinics_doctors: id, clinic_id, doctor_id (привязка: доктор/клиника)

Один доктор может работать в нескольких клиниках. Связи есть. Yii2 модели: Clinics, Doctors, ClinicsDoctors

Задача - получить список всех врачей определенной клиники...

Как я делаю:

// Получаю массив ID всех врачей клиники (для примера, клиники id = 1)
$doctors_array = ClinicsDoctors::find()->select('doctor_id')->where(['clinic_id' => 1])->column();

// Получаю врачей из таблицы doctors по массиву ID
$doc_clinics = Doctors::find()->where(['IN', 'id', $doctors_array])->all();


Это работает. Но смущает, что в массиве может быть несколько сотен ID. А если это доктора клиник целого города...
Думаю, что решение должно быть красивее.

Можно и в Redis хранить множества доктор/клиники (это не столь важно)
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 2
irishmann
@irishmann
Научись пользоваться дебаггером
Составить и выполнить прямой запрос в БД.
Ответ написан
Комментировать
@BorisKorobkov Куратор тега MySQL
Web developer
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы