【问题标题】:CakePHP: Alias In ModelCakePHP:模型中的别名
【发布时间】:2012-02-24 19:50:51
【问题描述】:

我正在创建一个基本的学生/课程脚本。我正在使用 3 个模型:Student、Course、StudentCourse。以下是关系:

学生:

  • 'hasMany' 课程
  • 'hasMany' 学生课程

课程:

  • 'belongsTo' 学生(这是课程讲师)
  • 'hasMany' 学生课程
  • 'hasAndBelongsToMany' 学生(这些是注册课程的学生)

学生课程:

  • “属于”学生
  • “属于”课程

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

这里是控制器/视图调用:http://bin.cakephp.org/view/645421766

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    我认为你确实应该稍微改变一下你的架构。学生和教师都是用户。因此,创建一个包含 id、姓名、电子邮件密码等的 User 模型。我建议添加一个名为 Participant 或 CourseParticipant 的附加模型。所以,Course有很多参与者。您的 Participant 模型具有 course_id、user_id、“as”或“role”(学生、教师等)。

    使用 Course hasMany Participant 您可以做到:

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

    ...对于 Instructor 也是如此。看到'as'字段的条件和使用了吗?我不为此推荐 habtm(我从不推荐 cake habtm ......而且我认为你在 StudentCource 的正确轨道上)。

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

    现在你有了各种有趣的数据。这位讲师讲授的课程。该学生所学的课程。

    *edit:我应该补充一点,蛋糕约定建议您的 Participant 类命名为 CourseUser。

    【讨论】:

    • 内森,你最终修改了你的架构吗?
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多