CakePHP:模型中的别名

时间:2012-02-24 19:50:51

标签: cakephp

我正在创建一个基本的学生/课程脚本。我有3个与我合作的模特:学生,课程,学生课程。以下是关系:

学生:

  • 'hasMany'课程
  • 'hasMany'SchoolCourse

课程:

  • 'belongsTo'学生(这是课程导师)
  • 'hasMany'SchoolCourse
  • 'hasAndBelongsToMany'学生(这些是报名参加课程的学生)

StudentCourse:

  • 'belongsTo'学生
  • 'belongsTo'课程

现在,当我试图让所有已经报名参加课程的学生(因为它也会返回课程的教师并弄乱阵列)时,我遇到了一些问题。如何才能使“课程”中的“belongsTo”使用名为“讲师”的别名(这样当我获得“课程”的数据时,我有:$ course ['Course'](课程数据), $ course ['Instructor'](讲师的数据,在课程表中由student_id引用)和$ course ['Students'](学生报名参加课程)?

以下是控制器/查看电话:http://bin.cakephp.org/view/645421766

1 个答案:

答案 0 :(得分:3)

我认为你应该确实改变你的架构。学生和教师都是用户。因此,请使用ID,名称,电子邮件密码等制作用户模型。我建议添加名为Participant或CourseParticipant的其他模型。所以,课程有很多参与者。您的参与者模型包含course_id,user_id,“as”或“role”(学生,教师等)。

您可以使用课程hasMany Participant:

array(

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

);

......对于教练来说也是如此。查看'as'字段的条件和用法?我不推荐habtm(我从不推荐蛋糕habtm ...我认为你在StudentCource的正确轨道上)。

让故事指导您的架构。用户可以是学生和教师。课程包括作为学生或教师参与的用户。有一天,您可能会有用户作为助理参加课程。

现在你有各种有趣的数据。本讲师讲授的课程。这个学生已经上过的课程。

*编辑:我应该补充说,蛋糕会议建议您的参与者类名为CourseUser。