2017-09-27 65 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

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