CakePHP: псевдоним в модели - PullRequest
       2

CakePHP: псевдоним в модели

0 голосов
/ 24 февраля 2012

Я создаю базовый сценарий для студента / курса. У меня есть 3 модели, с которыми я работаю: Student, Course, StudentCourse. Ниже приведены отношения:

Студент:

  • Курс hasMany
  • Студенческий курс hasMany

Курс:

  • Студент «принадлежит» (это курс ИНСТРУКТОР)
  • Студенческий курс hasMany
  • Студент 'hasAndBelongsToMany' (это студенты, записавшиеся на курс)

StudentCourse:

  • «принадлежит» студенту
  • Курс «принадлежит»

Теперь, я сталкиваюсь с некоторыми проблемами, когда пытаюсь получить всех студентов, которые записались на курс (потому что он также возвращает преподавателя для курса и портит массив). Как я могу сделать так, чтобы в «Course» в «Course» использовался псевдоним «Instructor» (таким образом, когда я получаю данные для «Course», у меня есть: $ course ['Course'] (данные курса), $ course ['Instructor'] (данные преподавателя, на которые ссылается student_id в таблице курсов) и $ course ['Students'] (студенты записались на курс)?

Вот контроллеры / просмотр вызова: http://bin.cakephp.org/view/645421766

1 Ответ

3 голосов
/ 25 февраля 2012

Я думаю, что вы действительно должны немного изменить свою схему. Студенты и преподаватели являются пользователями. Поэтому создайте модель пользователя с идентификатором, именем, паролем электронной почты и т. Д. Я предлагаю добавить дополнительную модель под названием Участник или Участник курса. Итак, курс имеет много участников. Ваша модель участника имеет course_id, user_id, «as» или «роль» (студент, преподаватель и т. Д.).

Пользуясь курсом, вы можете сделать много участников:

array(

'Student' => array(
    'className' => 'Participant',
    'conditions' => array('Student.as' => 'student')
)

);

... то же самое для инструктора. Смотрите условия и использование поля «как»? Я не рекомендую habtm для этого (я никогда не рекомендую торт habtm ... и я думаю, что вы на правильном пути с StudentCource).

Пусть истории руководят вашей схемой. Пользователи могут быть студентами и инструкторами. Курсы имеют пользователей, которые участвуют в качестве студентов или преподавателей. Однажды у вас могут появиться пользователи, которые участвуют в курсе в качестве ассистента.

Теперь у вас есть много разных интересных данных. Курсы, которые преподавал этот инструктор. Курсы, которые этот студент прошел.

* редактировать: я должен добавить, что соглашение о торте предполагает, что ваш класс участника будет называться CourseUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...