Ассоциация моделей Cakephp - PullRequest
1 голос
/ 30 июля 2011

Я пытаюсь выяснить, какой тип отношений я должен использовать, чтобы связать следующее:

У нас есть класс, в котором есть учитель и ученики.

Учащиеся и преподаватели относятся к классной комнате. А как же наоборот?

Могу ли я использовать следующее в модели класса:

var $hasMany = array('Students');

var $hasOne = array('Teacher');

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Зависит от того, как вы хотите получить и / или смоделировать данные.

Если у вашего 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' );
}
0 голосов
/ 30 июля 2011

Это очень зависит от вашей ситуации, но в моей старой школе это было бы правильно, хотя, возможно, и ненужные отношения добавить.

Учитель имеет много учеников. В классе один учитель. В классе много учеников

Тем не менее, студенты передвигаются?Являются ли отношения между учениками и аудиторией совершенно необходимыми?Я думаю, что наиболее определяющими в этом случае являются отношения учитель-ученик.Тогда, возможно, учитель-класс.Исходя из тех отношений, которые некоторые учащиеся являются частью класса, вы можете предположить, что

Следовательно:

Классная комната - Учитель - <Ученическая комната (есть одна)<p> Затем вы найдете учеников класса через Учителя.

...