由于CakePHP限制仅使用User作为进入Auth的道路,我必须更改我的用户类型设置。我已经尝试了一些花哨的代码来覆盖Auth组件中的identify()方法,但这并没有解决问题。我使用Role字段来区分高级用户和标准用户。
我有需要登录并分别执行操作的用户和公司。为什么不使用带有usertype字段的1个用户表?因为他们在表格中有75%的不同字段。
在我的新设置中,我有一个用户表和一个与公司或成员(以前的用户表)的HasOne关系。在User表中,常用字段包括用于登录的电子邮件地址和密码(用于解决Auth强制使用用户)。
看起来像这样:
表用户:
表成员
表公司
丑陋的是,User表总是有Null,因为用户是会员或公司
另一个解决方案可能是将FK指向另一方。因此,user_id将是Member和Companies表中的外键。
表用户:
表成员
表公司
我被困住了,没有正常化&数据库设计经验可供选择。或许这两种解决方案都很糟糕,另一种解决方案应该是它。 谢谢!
答案 0 :(得分:0)
你应该使用groups表来处理用户类型,即一个用户表,其中包含用户名和密码等公共字段以及属于groups表的外键,而一个用于组group表的表可以有不同类型的组normal_user或公司。这样您就可以根据需要处理多种不同的用户类型。即使你为每种类型的用户提供了许多不同的字段,你也可以为它们制作单独的表(如果你只有2-3种用户类型绝对不同),例如company_details user_details,并在其中添加特定于该类型用户的字段,并在组表中包含一个外键和一个类型字段。现在,groups表将从详细信息表中获取details_id。您可以根据组中的类型字段选择特定数据,例如,如果类型是normal_user,则使用user_detail表,如果是公司加入公司表,则为else。但是你必须做一些手工工作,因为蛋糕将无法正确加入群组表。
表:群组 id,details_id(非唯一),类型,名称,other_fields ......
表:用户 id,group_id,username,password,other_fields ...
表company_detail id,特定领域...... 其他群组表格