@ukoHka
Всего понемногу

Как в Yii2 настроить relation через третью таблицу?

Есть три модели: Ts, Plans, Students
Можно ли реализовать что-то наподобие такого?
Ts.php:
public function getPlans()
    {
        return $this->hasMany(Plans::className(), ['subject_id' => 'subject_id','teacher_id' => 'teacher_id', 'student.studyform_id' => 'studyform_id']);
    }

То есть в таблицах ts и plans есть совпадающие поля subject_id и teacher_id. Но если делать выборку только по этим полям, то для каждого ts.studyform_id выводятся все students.studyform_id, а нужно чтобы выводились только совпадающие.
Для каждого plans есть уникальный student, но для ts.studyform_id слишком много students.studyform_id

UPD:
В таблице ts поля teacher_id, subject_id, studyform_id
В таблице plans поля teacher_id, subject_id, student_id
В таблице students поля id, studyform_id

Для каждого ts.studyform_id нужно вывести plans с совпадающим students.studyform_id
  • Вопрос задан
  • 421 просмотр
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Так есть же пример в документации, связь через таблицу:
www.yiiframework.com/doc-2.0/guide-db-active-recor...
Ответ написан
Привет, делал подобное, в связной таблице хранил post_id и tag_id, вот
в моделе отвечающей за Посты писал
public function getTags()
    {
        return $this->hasMany(Tags::className(), ['id' => 'tag_id'])->viaTable('{{%statjiblogtags}}', ['post_id' => 'id']);
    }

statjiblogtags - таблица в которой связь post_id и tag_id
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы