Cakephp模型关联


Cakephp model association

我想弄清楚我应该使用哪种关系类型来关联以下内容:

我们有一个有老师和学生的教室。

学生和老师归教室。但是反过来呢?

我可以在课堂模型中使用以下内容吗?

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' );
}

这取决于你的情况,但在我以前的学校,这确实是正确的,尽管可能需要添加不必要的关系。

老师有许多学生一个教室有一个老师教室里有许多学生

然而,学生们四处走动吗?学生和课堂之间的关系是完全必要的吗?我认为在这种情况下,最重要的关系是师生关系。然后也许是教师课堂。根据这些关系,你可以推测出一些学生是教室的一部分。

因此:

教室-教师-<学生教室(有一个)老师(有许多)学生>

您可以通过Teacher找到教室的学生。