0

我正在编写一个蛋糕应用程序,在该应用程序中我试图模拟一个组对服务具有权限的情况,并且该组中的用户可以拥有这些权限的子集。如果组失去对服务的权限,则该组中的用户也应该失去权限。

我的桌子:

groups (id), services (id), groups_services (id, service_id, group_id), users (id, group_id), users_services (id, groups_services_id, user_id)

目前,组与服务具有 HABTM 关系。问题是,如果我从服务中删除一个组,那么它也应该从该组中的所有用户中删除。我通常知道使用 CakePHP 你可以通过在你的模型关系上定义一个依赖 => true 来做到这一点,但在这种情况下,users_services 依赖于代表 HABTM 的连接表 groups_services,所以我认为这不会工作。我是否必须打破 HABTM 关系才能使其正常工作,并改用 groups hasMany groups_services 和 services hasMany group_services?

4

1 回答 1

1

食谱

HABTM 数据被视为一个完整集,每次添加新的数据关联时,数据库中的完整关联行集都会被删除并再次创建,因此您始终需要传递整个数据集以进行保存。有关使用 HABTM 的替代方法,请参阅 hasMany through(连接模型)

因此,HABTM 主要适用于非常“愚蠢”的关系。

在大多数需要任何细粒度控制的情况下,HABTM 并不适合。

所以,简短的回答,是的。如您所想,分解您的 HABTM 并使用 a has many through 。

于 2013-08-08T01:44:45.340 回答