我刚刚开始学习CakePHP,在这种情况下需要帮助。
我有一个表(学生)和相应的模型(学生),它有一个名为‘教育资质’的属性,它可以有多个值(MBA,MCA,BCA,BA,PHD),所以我创建了一个包含所有学位列表的主表。
现在,当一个学生要注册他/她自己时,他必须在资格中选择多个选项。
我想在我的视图中从数据库中获得多个选项的DegreeMst数据。我的问题是,在这许多关系中,我必须创建一个新的模型DegreeMst,然后创建与学生模型的manytomany关系。
或者,我是否可以在不创建新模型DegreeMst的情况下完成此操作
发布于 2013-02-21 17:47:19
首先,如果您发现自己需要从表中获取数据,而不需要在MVC框架中创建模型,那么您很有可能做错了什么。
如果你真的只有5个可能的值(MBA,MCA,BCA,BA,PHD),我可能只会在你的表中让它们成为5个单独的tinyint(1)字段,比如has_mba,has_mca等,然后在你的视图中将每个值显示为一个单独的复选框。这可能是最简单的方法。
如果您不想这样做,并且您肯定想要一个单独的DegreeMst表,那么您需要的是一个hasAndBelongsToMany relationship。
您将需要一个单独的连接表,类似于students_degreemsts,它包含一个student_id和一个degreemst_id列。您不需要为joins表创建模型。
设置完成后,在视图中输出复选框的代码如下所示:
echo $this->Form->input('Student.DegreeMst',array('label'=>'Select your degrees','multiple'=>'true'));更新
您将需要3个数据库表和2个模型。您了解多对多(即,Cake称之为hasAndBelongsToMany)关系和joins tables
在您的数据库中,您将需要3个表,根据CakePHP信息命名:
学生(id,姓名,地址,other_field)
度(id,name,another_field)
students_degrees (id,student_id,degree_id)
最后一个表是您的连接表,它应该包含指向学生表和学位表的两个外键。在CakePHP中,连接表不需要模型或控制器。
显然,您需要为您的学生表建立一个模型,您将在其中定义您的hasAndBelongsToMany关系:
public $hasAndBelongsToMany = array(
'Degree' => array(
'className' => 'Degree',
'joinTable' => 'students_degrees',
'foreignKey' => 'student_id',
'associationForeignKey' => 'degree_id',
),
);您的学位表还需要一个模型,但除非需要,否则不必在该模型中再次定义hasAndBelongsToMany关系。
https://stackoverflow.com/questions/14998110
复制相似问题