我有学生模型 (id, name, school_id) 和学校模型 (id, name, ...) 关系模式是:学校有很多学生,学生只能有一所学校。
<?php
class School extends \yii\db\ActiveRecord
{
/*.....*/
public function getStudents()
{
return $this->hasMany(Student::className(), ['school_id' => 'id']);
}
/*.....*/
}
?>
现在我想在学校创建表单上为每个学生呈现复选框:
<?= $form->field($model, 'students')->checkboxList(ArrayHelper::map($allStudents, 'id', 'name')) ?>
($model 是 School 实例。为简单起见,我们假设没有很多学生 - 所以复选框控制就足够了)
现在,如果我想添加验证规则以允许最多 5 名学生(使用 School::rules() 方法) - 在提交表单时我得到“尝试设置只读属性学生”
好的,这意味着 AR 关系是模型中的只读属性。
但是我如何使用 Yii2 activeForm 和使用规则进行验证,而不创建另一个不会保存到数据库并且仅用于验证目的的虚假属性(student_ids)?
这里有“正确”的方式吗?谢谢!