如何正确设置3个模型之间的多个关联(CakePHP)



所以我昨晚试图解决这个问题,在绕了几圈子后,我决定我需要一些帮助。我确实发布了一个关于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被视为模型。我们可以根据需要在其中添加尽可能多的额外列。

关系成为组用户属于数组('用户', '组'(;用户有许多组用户组有许多组用户

在您的情况下,创建关系:客户具有模型的许多地址。让我们调用的是客户地址。

然后客户地址

有很多联系人,联系人属于客户地址。

希望这有帮助!

最新更新