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

Mysql 将表连接到CakePHP 3.x中的连接表:关联和双重操作,mysql,join,associations,cakephp-3.x,Mysql,Join,Associations,Cakephp 3.x,在本书中,我希望允许其他用户修改CoursesMembershipsjoin表中的days\u attended字段,但只能每天修改一次。为此,我将使用id | coursesmembership | id | student | id | created | modified字段创建一个新的联接表coursesmemberships视图。问题是如何与协会相处?我会: 一个学生有许多课程成员视图,并且通过课程成员视图拥有许多课程成员视图 一个CoursesMembership有许多course

在本书中,我希望允许其他用户修改
CoursesMemberships
join表中的
days\u attended
字段,但只能每天修改一次。为此,我将使用
id | coursesmembership | id | student | id | created | modified
字段创建一个新的联接表
coursesmemberships视图
。问题是如何与协会相处?我会:

  • 一个学生有许多
    课程成员视图
    ,并且通过
    课程成员视图
    拥有许多
    课程成员视图

  • 一个
    CoursesMembership
    有许多
    coursesmberships视图
    ,并且通过
    coursesmberships视图
    属于许多
    学生

  • a
    CoursesMemberships查看
    belongsTo
    coursesmberships
    和belongsTo
    Students

我有点困惑,因为
CoursesMemberships
表本身已经是一个联接表了。这条路对吗


第二个问题是如何避免在提交表单时出现双重操作,这将允许其他用户更改字段
days\u attered
?如果我想检查最后一次修改的
会员是否已经24小时了,他需要
edit()
a
CoursesMemberships
并同时创建/修改
coursesmberships查看。谢谢。

关于第一个答案,我将做以下几点

  • 学生
    • 拥有多个
      课程成员视图
    • 属于多个
      课程
      课程会员
  • CoursesMembership
    • 拥有多个
      课程成员视图
    • 以下是学生
  • 属于
    课程
  • CoursesMembershipsReview
    • 以下为
      课程会员资格
    • 以下是学生
  • 无论如何,你的问题不清楚“一天一次”是指单个用户还是指所有用户

    换句话说:如果一个用户编辑课程成员身份,那么在接下来的24小时内,是否也禁止其他用户编辑课程成员身份,或者仅限于该用户

    在第一个场景中,您甚至不需要
    课程\会员资格\审查
    表(除非您需要)。您只需在
    course\u memberships
    表中存储有关谁以及何时编辑记录的信息


    在第二个场景中,当您创建
    课程成员身份
    实体时,您可以附加一个
    课程成员身份查看
    实体,其中包含创建
    课程成员身份
    的用户的信息,并同时保存这两个实体

    谢谢您的回答!因此,你建议通过课程成员视图(我前面提到的其他关联),学生和课程成员都不属于彼此,这让生活变得更加轻松。我确实有第二个场景,但课程成员是由参与的学生更早创建的。其他人可以修改他记录中的参加天数,当他们这样做时,我需要添加/编辑新的CourseSMemberships查看实体以执行我的24小时检查。我还不清楚怎么做。所以你是说如果我修改你参加的天数,那么除了我以外的任何人都可以在接下来的24小时内再次修改,对吗?正确。所有其他用户都可以向此字段添加天数,但每天只能添加一次。您可以使用验证来确保。您想创建一个应用程序规则。本书中的Ser数据验证我考虑过自定义验证,但无论如何,我都需要先在CoursesMembershipsReviews中编辑(或创建,如果不存在)一条记录。如果我在控制器中执行此操作并由vlaidation进行检查,它会工作吗?