Сохранение и валидация relations в yii2 через формы — как избежать дублирования атрибутов в форме?
Если для кого-то актуально - я решил вопрос введением  дополнительного атрибута selectedStudents у класса School, он в бд не пишется, существует чисто для формы и для валидационных правил.
В afterSave хуке в School мы делаем примерно такое:$students = Student::find()->where(['id' => $this->selectedStudents])->all();
foreach ($students as $student) {
   $student->school_id = $this->id; // еще можно использовать метод link()
   $student->save();
}
Если подобных дублей атрибутов (students readonly и selectedStudents read/write) хочется избежать любой ценой - надо вводить отдельную модель для формы, чтобы в модели School оставался только relation, а в модели формы уже был атрибут selectedStudents, но это мне кажется лучше приберечь для более сложных кейсов.
Если для кого-то актуально - я решил вопрос введением  дополнительного атрибута selectedStudents у класса School, он в бд не пишется, существует чисто для формы и для валидационных правил.
В afterSave хуке в School мы делаем примерно такое:$students = Student::find()->where(['id' => $this->selectedStudents])->all();
foreach ($students as $student) {
   $student->school_id = $this->id; // еще можно использовать метод link()
   $student->save();
}
Если подобных дублей атрибутов (students readonly и selectedStudents read/write) хочется избежать любой ценой - надо вводить отдельную модель для формы, чтобы в модели School оставался только relation, а в модели формы уже был атрибут selectedStudents, но это мне кажется лучше приберечь для более сложных кейсов.