我正在编写一个蛋糕应用程序,我试图模拟一个组拥有服务权限的情况,该组中的用户可以拥有这些权限的子集。如果该组失去对服务的权限,则该组中的用户也应该失去权限。
我的桌子:
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你可以通过依赖=>来实现这一点。在模型关系中真正定义,但在这种情况下,users_services依赖于代表HABTM的连接表groups_services,所以我不认为这会起作用。我是否必须打破HABTM关系才能使其工作,而使用组hasMany groups_services和services hasMany group_services?
答案 0 :(得分:1)
来自the cookbook:
HABTM数据被视为一套完整的集合,每次都是新数据 关联是在数据库中添加完整的关联行集 被删除并再次创建,所以你总是需要通过整个 用于保存的数据集。有关使用HABTM的替代方法,请参阅hasMany 通过(加入模型)
因此,HABTM主要适用于非常“愚蠢”的关系。
在大多数需要任何细粒度控制的情况下,HABTM都不适合。
所以,简短的回答,是的。打破你的HABTM并按照你的想法使用has many through。