Cakephp模型协会

时间:2011-07-29 21:43:18

标签: php cakephp cakephp-appmodel

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

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

学生和老师属于课堂。但是另一种方式呢?

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

var $hasMany = array('Students');

var $hasOne = array('Teacher');

感谢。

2 个答案:

答案 0 :(得分:1)

取决于您希望如何检索和/或建模数据。

假设您的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' );
}

答案 1 :(得分:0)

它非常依赖于你的情况,但在我的旧学校,这确实是正确的,虽然可能是一个不必要的关系来添加。

老师有很多学生 课堂上有一位老师 课堂上有很多学生

然而,学生们到处走动吗?学生和课堂之间的关系是否完全必要?我认为在这个例子中最明确的关系是师生关系。然后也许是老师 - 教室。您可以根据某些学生参与课堂的关系进行推测。

因此:

课堂 - 教师 - <学生们 课堂(有一个)老师(有很多)学生

然后,您将通过教师找到教室的学生。