我试图找出其中的关系类型,我应该使用涉及以下内容:CakePHP的模型关联
我们必须具有教师和学生的课堂。
学生和老师都属于教室。但是反过来呢?
我可以在课堂模式如下:
var $hasMany = array('Students');
var $hasOne = array('Teacher');
感谢。
我试图找出其中的关系类型,我应该使用涉及以下内容:CakePHP的模型关联
我们必须具有教师和学生的课堂。
学生和老师都属于教室。但是反过来呢?
我可以在课堂模式如下:
var $hasMany = array('Students');
var $hasOne = array('Teacher');
感谢。
取决于您想要如何检索和/或建模数据。
假设你Classrooms
只会有一个Teacher
,或Teachers
将只有一个Classroom
,你甚至可以逃脱制作Classroom
的Teacher
领域。
但是我们假设你想保留所有的对象。在这种情况下,您的模型看起来像这样:
// classroom.php
class Classroom extends AppModel {
var $hasMany = array('Student');
var $hasAndBelongsToMany = array('Teacher');
}
// teacher.php
class Teacher extends AppModel {
var $hasMany = array('Student');
var $hasAndBelongsToMany = array('Classroom');
}
// student.php
class Student extends AppModel {
var $belongsTo = array('Teacher', 'Classroom');
}
你能解释一下老师模型中的$ hasAndBelongsTo吗?一个$ belongsTo会有什么区别?谢谢! – AlexBrand
当你考虑这些关系时,请记住它们存在以允许轻松加入模型。$ hasAndBelongsToMany允许的用于*交叉连接*并以更复杂的方式加入。假设你的博客中有用户发布信息,用户在评论中回复。用户可以成为帖子的一部分,成为评论的一部分(如果您说有用户名标签),“拥有”帖子和“自己”的评论。一个简单的$ hasMany或$ belongsTo关系不能很好地处理这些关系的双向性质。我建议您阅读以下内容:http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM – dclowd9901
它非常依赖于你的情况,但在我的老学校,这确实是正确的,虽然也许是不必要的关系增加。
教师有很多学生 教室有一个老师 课堂有很多学生
然而,做学生走动?学生和课堂之间的关系是否完全必要?我认为在这种情况下最重要的关系是师生关系。然后也许是老师教室。你可以根据这些关系,一些学生是教室的一部分来猜测。
因此:
课堂 - 教师 - 学生<课堂 (有一个)教师(有很多)学生
然后,您可以通过老师发现教室的学生。
它取决于您希望在这些模型上具有哪些操作约束。在现实生活中,一个学生可以有很多老师;但是如果一个学生在你的应用中只能有一位老师,那么hasOne就是正确的关系。 –
好吧,对我来说,教室更像是一种行政事务,我可以在教室里看到学生和老师。一个教室可以有多个学生和一个教师。一名学生只能属于一个教室。老师负责教室,并且应该有能力列出课堂上的学生。 – AlexBrand