我正在创建一个项目管理系统,将项目分配给用户
在ProjectsUser
和$belongsTo
模型中创建模型HABTM
和定义2 Project
关系以及定义User
关系之间的区别是什么?但是最正确的方法是什么?如何将数据保存在projects_users
表中?
答案 0 :(得分:3)
根据我的经验,如果您希望仅能够从连接表(具有2个ID的那个)保存或删除行,那么使用通过hasMany和belongsTo关联关联的三个模型会更加简单。
您还可以直接从联接表中检索数据,并更轻松地执行您想要的查询
这就是CakePHP文档所说的引用HABTM并保存数据的原因:
但是,在大多数情况下,更容易为连接表创建模型并设置hasMany,belongsTo关联,如上例所示,而不是使用HABTM关联。
在这里您可以找到更多全文: http://book.cakephp.org/2.0/en/models/saving-your-data.html#what-to-do-when-habtm-becomes-complicated
我已将此方法用于“读取”表(使用post_id和user_id)以及订阅和类似关系。
答案 1 :(得分:1)
第一种方式称为“hasAndBelongsToMany”[details here]。
第二个被称为“hasMany through”[details here]。
与“hasMany through”相关的第二个链接包含有关何时以及为何要使用它的详细信息和冗长的解释。
答案 2 :(得分:0)
不确定cakephp的细节,但一般来说明确定义关系模型会让你对它有更多的控制,例如,如果你想做一些验证或在创建这种关系时添加回调。