讓我們想象的,你Mcourse
表稱爲courses
和型號爲表稱爲Courses
分鐘,你Lcourse
表稱爲courses_colleges
和您的院校表是colleges
和型號爲表Colleges
現在,你應該有Courses
模型關係:
public function relations() {
return array(
'colleges' => array(self::MANY_MANY, 'Colleges', 'courses_colleges(course_id, college_id)')
);
}
你Colleges
模型應該有類似的關係:
public function relations() {
return array(
'courses' => array(self::MANY_MANY, 'Courses', 'courses_colleges(college_id, course_id)')
);
}
現在,如果您想打印一個包含某所大學所有課程的下拉菜單,在您的控制器的操作方法得到,高校,包括其課程的模式:
public function actionShow() {
$id = 1; // We set just some sample id. You could get it from request ofc.
$college = Colleges::model()->with('courses')->findByPk($id);
$this->render('show', array('college'=>$college));
}
現在,在你看來打印出這一點:
echo CHtml::dropDownList('courses', '', CHtml::listData($college->courses, 'id', 'name'));
凡'id'
和'name'
是你Courses
模型列。
就是這樣的。
如果我通過默認範圍設置college_Id ..我必須寫關係嗎? –
您不能通過默認範圍設置college_id,因爲在這種情況下,college_id將保持不變,您將可以僅爲1所大學使用此模型。而關係則描述了模型如何相互聯繫。如果你有鏈接,那麼你應該聲明它。 – Johnatan
每個用戶都有一個college_Id.So病人在登錄後會在會話(yii:app-> User-> CollegeId)中存儲College_Id。在大多數控制器中,我都將默認範圍設置爲collegeId。那麼需要把$ id = yii :: app() - > User-> CollegeId? 默認範圍: 'condition'=>「collge_Id ='」。Yii :: app() - > UserI> CollegeId。「'」, –