학생 모델 (id, name, school_id)과 학교 모델 (id, name, ...) 관계 스키마는 : 학교는 학생이 많으며 학생은 한 개의 학교 만 가질 수 있습니다.yii2 형식의 관계 저장 - 특성의 중복을 방지하는 방법?
<?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')) ?>
($ 모델 학교 인스턴스 단순화를 위해 이제 많은 학생들이 아니라는 것을 가정하자 - 그래서 체크 박스 컨트롤이면 충분)
양식 등록시 최대 5 명의 학생 (School :: rules() 메서드 사용)을 허용하는 유효성 검사 규칙을 추가하려면 "읽기 전용 속성 학생 설정 시도"
좋습니다. AR 관계는 모델에서 읽기 전용 속성입니다.
하지만 YII2 activeForm 및 유효성 검사를 규칙을 사용하여 어떻게 사용할 수 있습니까? 다른 가짜 속성 (student_ids)을 만들지 않고 db에 저장되지 않고 유효성 검사 목적으로 만 사용됩니까?
"올바른"방법이 있습니까? 감사합니다.
나는 또한이 문제에 대해 생각해 왔으며 다른 형식의 모델 만 만들었다. 어떤 해결책을 생각해 냈습니까? –
일반적으로 입력을 허용하고 유효성 검사 규칙을 첨부 할 수있는 허위 속성 [fieldname] _ids를 사용합니다. 복잡한 경우에 올바른 방법은 별도의 모델을 만드는 것입니다. :) –