加入 table 到 CakePHP 3.x 中的加入 table:关联和双重作用

Join table to a join table in CakePHP 3.x: associations and double-action

在书中的 this example 中,我希望允许其他用户修改 CoursesMemberships 中的字段 days_attended 加入 table,但每天只能修改一次。为此,我将使用 id | coursesmembership_id | student_id | created | modified 字段创建一个新的连接 table CoursesMembershipsReviews。问题是如何与协会相处?我会这样做:

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

第二个问题是如何在提交表单时避免双重操作,这将允许另一个用户更改字段days_attended?如果我想检查最后一个 modified 是否是 24 小时,他需要同时 edit() a CoursesMemberships 和 create/modify CoursesMembershipsReview。谢谢。

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

  • Student
    • 有很多 CoursesMembershipsReviews
    • 属于 Courses 通过 CoursesMemberships;
  • CoursesMembership
    • 有很多CoursesMembershipsReviews
    • 属于Students
    • 属于Courses
  • CoursesMembershipsReview
    • 属于 CoursesMemberships
    • 属于Students

无论如何,您的问题中不清楚 'once a day' 是指单个用户还是所有用户。

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

在第一种情况下,您甚至不需要 courses_memberships_reviews table(除非您需要)。您可以在 course_memberships table 中存储有关编辑记录的人员和时间的信息。

在第二种情况下,当您创建 CoursesMembership 实体时,您可以附加一个 CoursesMembershipsReview 实体,其中包含创建 CoursesMembership 的用户的信息,并同时保存这两个实体时间