Model view controller 帮助处理两个注册表之间的数据依赖关系

Model view controller 帮助处理两个注册表之间的数据依赖关系,model-view-controller,oop,Model View Controller,Oop,我这里有一个棘手的问题,用户和他/她的宠物都需要注册。用户和宠物都被视为单独的实体,都需要单独的登记表。但是,用户的宠物必须通过数据库中的外键链接到用户。这个过程基本上是当一个新用户加入这个网站时,他们首先注册他们的宠物,然后注册他们自己。此订单的原因是首先检查他们的宠物是否符合网站要求(需要满足一些标准),而不是让用户注册后才发现他们的宠物不符合网站要求。正是这种提交表格的顺序让我有点头疼,如下所示 该网站正在使用MVC框架进行开发,用户注册过程通过用户表单控制器中的方法进行管理,而宠物注册过

我这里有一个棘手的问题,用户和他/她的宠物都需要注册。用户和宠物都被视为单独的实体,都需要单独的登记表。但是,用户的宠物必须通过数据库中的外键链接到用户。这个过程基本上是当一个新用户加入这个网站时,他们首先注册他们的宠物,然后注册他们自己。此订单的原因是首先检查他们的宠物是否符合网站要求(需要满足一些标准),而不是让用户注册后才发现他们的宠物不符合网站要求。正是这种提交表格的顺序让我有点头疼,如下所示

该网站正在使用MVC框架进行开发,用户注册过程通过用户表单控制器中的方法进行管理,而宠物注册过程通过宠物表单控制器中的方法进行管理

首先是宠物登记表,在此阶段可以保存宠物数据而无需所有者id,用户注册后可能会添加用户id(例如通过从会话中检索宠物id)。但是,这样做可能会导致冗余数据,其中会在数据库中创建pet记录,但如果用户实际上也没有注册自己,则pet将成为数据库中的无主记录

另一种选择是在宠物注册阶段序列化新宠物的数据,在用户填写注册表之前不要将其保存到数据库中。创建用户后,我可以将序列化数据和所有者id传递给Pet模型中的方法,该方法可以更新数据库。但是,我还需要将新创建的$pet设置为$this->pet,然后我可以访问它以获得一系列其他相关表单。我应该在model方法中设置session变量吗?然后在Pet控制器构造函数中,检查会话中存储的Pet,如果是,则分配给$this->Pet


如果这对任何人都有意义,并且你有一些建议,我将很高兴听到

这里有一个稍微偏左的字段解决方案(根据您的情况可能有效,也可能无效):

要求用户在宠物注册时输入有效的电子邮件地址,然后在用户注册时通过匹配电子邮件地址(或电子邮件地址散列)将用户与宠物链接

如果你留下了悬而未决的宠物推荐信,你可以在一个月后(如果没有相关的用户id)向宠物主人发送一封电子邮件,说“我要删除你的宠物”,或者类似的话