所以我昨晚试图解决这个问题,在绕了几圈子后,我决定我需要一些帮助。我确实发布了一个关于ID字段未填写的问题,但它变得太长且令人困惑,我意识到问题可能基于关联。
我正在处理客户数据库。对于较大的企业客户,关系变得有点复杂。我有3种型号,客户,客户地址和客户联系人。一个客户可以有多个地址和许多联系人,但联系人也基于一个地址,因此一个地址有许多联系人。
我试图实现的最终结果是能够双向搜索数据,例如
Customer -> Address 1 -> Contact 1, Contact 2, Contact 3, etc....
Address 2 -> Contact ... ... ...
....
或。。。。
Customer -> Contact 1 -> Address
Contact 2 -> Address
....
我遇到的问题是地址必须hasMany
联系人,联系人必须hasOne
地址,但是这两种关系冲突,因为另一方应该belongsTo
而没有。
这样的巧合。上周刚学过这个!据我所知,这是一个基本的关系布局
客户有许多地址地址属于客户
地址有很多联系人联系人属于收件人地址
现在,这涵盖了您要实现的第一个案例的基本模型。通过地址搜索客户的联系人。
至于第二种情况。从联系人到客户的查询将非常昂贵,因此,我的建议是
创建关系:
客户有许多地址并在此基础上构建模型。这种关系称为hasMany,其中两个模型具有hasMany关系,但在关系之上具有更多信息。例如:
组具有和属于许多用户用户拥有和属于许多组
这需要一个新的表groups_users。此外,每个组可以有多个管理员。假设我们遵循所有 2.x 约定。Cake 不允许在此表中使用额外的列。因此,如果这种关系group_users被视为模型。我们可以根据需要在其中添加尽可能多的额外列。
关系成为组用户属于数组('用户', '组'(;用户有许多组用户组有许多组用户
在您的情况下,创建关系:客户具有模型的许多地址。让我们调用的是客户地址。
然后客户地址有很多联系人,联系人属于客户地址。
希望这有帮助!