2017-09-27 72 views
0

this example这本书我想让其他用户修改days_attendeddays_attended连接表中的CoursesMemberships,但每天只有一次。为此,我将创建一个新的连接表CoursesMembershipsReviewsid | coursesmembership_id | student_id | created | modified字段。问题是如何与协会?我会做:在CakePHP 3.x中加入一个连接表:关联和双动

  • 学生的hasMany CoursesMembershipsReviews和belongsToMany CoursesMemberships通过CoursesMembershipsReviews;

  • 一个CoursesMembership的hasMany CoursesMembershipsReviews和belongsToMany Students通过CoursesMembershipsReviews;

  • a CoursesMembershipsReview belongsTo CoursesMemberships and belongsTo Students

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

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

回答

1

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

  • Student
    • 的hasMany CoursesMembershipsReviews
    • belongsToMany Courses通过CoursesMemberships;
  • CoursesMembership
    • 的hasMany CoursesMembershipsReviews
    • 属于关联Students
    • 属于关联Courses
  • CoursesMembershipsReview
    • 属于关联CoursesMemberships
    • 属于关联Students

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

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

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

在当你创建CoursesMembership实体就可以把CoursesMembershipsReview实体包含谁创造了CoursesMembership用户的信息,并保存两个在同一时间

+0

感谢你的回答第二个方案!所以你建议学生和课程成员不通过CoursesMembershipsReviews(以上我以前的其他协会)不属于彼此,这使得生活变得更容易。我确实有第二种情况,但课程成员是由涉及更早的学生创建的。其他人将可以在他的记录中修改days_attended,当他们这样做时,我需要添加/编辑一个新的CoursesMembershipsReview实体来执行我的24小时检查。这仍然不清楚如何。 –

+0

所以你说如果我修改days_attended,那么除了我以外的任何人都可以在接下来的24小时内再次修改它,对吧? – arilia

+0

正确。所有其他用户可以在该字段中添加日期,但每天只能添加一次。 –