CakePHP HABTM关系和删除

时间:2013-08-07 22:10:46

标签: cakephp

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

我的桌子:

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?

1 个答案:

答案 0 :(得分:1)

来自the cookbook

  

HABTM数据被视为一套完整的集合,每次都是新数据   关联是在数据库中添加完整的关联行集   被删除并再次创建,所以你总是需要通过整个   用于保存的数据集。有关使用HABTM的替代方法,请参阅hasMany   通过(加入模型)

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

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

所以,简短的回答,是的。打破你的HABTM并按照你的想法使用has many through