将表连接到CakePHP 3.x中的连接表:关联和双操作

时间:2017-09-27 07:53:23

标签: mysql join associations cakephp-3.x

在本书的this example中,我想允许其他用户修改days_attended联接表中的字段CoursesMemberships,但每天只能修改一次。为此,我将使用CoursesMembershipsReviews字段创建一个新的联接表id | coursesmembership_id | student_id | created | modified。问题是如何与协会合作?我愿意:

  • 学生有许多CoursesMembershipsReviews并且通过CoursesMemberships属于我们CoursesMembershipsReviews;

  • CoursesMembership hasMany CoursesMembershipsReviews且belongsToMany StudentsCoursesMembershipsReviews;

  • a CoursesMembershipsReview belongsTo CoursesMemberships并且属于Students

我有点困惑,因为CoursesMemberships表已经是连接表本身。这是正确的方法吗?

第二个问题是如何在提交表格时避免双重操作,以允许其他用户更改字段days_attended?如果我想检查最后edit()是否为24小时,他需要CoursesMemberships CoursesMembershipsReview并同时创建/修改modified。谢谢。

1 个答案:

答案 0 :(得分:1)

关于第一个答案我会做以下

  • Student
    • hasMany CoursesMembershipsReviews
    • belongsToMany CoursesCoursesMemberships;
  • CoursesMembership
    • hasMany CoursesMembershipsReviews
    • belongsTo Students
    • belongsTo Courses
  • CoursesMembershipsReview
    • belongsTo CoursesMemberships
    • belongsTo Students

无论如何,你的问题不清楚“每天一次”是指单个用户还是所有用户。

换句话说:如果用户编辑courseMembership是否也禁止在接下来的24小时内为其他用户编辑或仅为该用户编辑?

在第一个场景中,您甚至不需要courses_memberships_reviews表(除非您需要它)。您只需在course_memberships表中存储有关编辑记录的人员和时间的信息。

在创建CoursesMembership实体的第二个方案中,您可以附加一个CoursesMembershipsReview实体,其中包含创建CoursesMembership的用户的信息并同时保存两个< / p>