我正在使用CakePHP 2.x,我想知道是否有任何内置功能来处理HABTM连接表。我没有在文档中看到任何直接更改HABTM关系属性的内容。这就是我的意思:
我有一个连接表,其中包含两个模型之间关系的标志,可以这样说明:
(int) id | (int) user_id | (int) video_id | (bool) hasRated | (bool) hasWatched | (bool) hasDownloaded
第一列只是常规表ID。接下来的两个(user_id和video_id)是用户表和视频表的典型HABTM外键。以下3个标志是两个模型之间关系的指标(该视频是否被观看?是否被评级?等)
我目前正在构建自己的查询,这是我的启动设置。我的最终目标是在两个模型的关系之间添加属性。这是解决这个问题的正确方法,还是有更多的Cakey方法来做到这一点?
答案 0 :(得分:0)
要维护HABTM
,您可以维护联接表。 HABTM
的联接表的蛋糕约定是:
此新连接表的名称需要包含两个模型的名称 涉及,按字母顺序排列,并用下划线分隔(_ )。表的内容应该是两个字段,每个外键 (应该是整数)指向两个主键 涉及的模型。为避免任何问题 - 请勿定义组合的主要 这两个字段的关键,如果您的应用程序需要它,您可以 定义唯一索引。如果您打算添加任何额外信息 在此表中,最好添加一个额外的主键字段 (根据惯例'id')使表格上的表演像其他任何一样简单 模型。
所以它似乎对你好。但是你必须遵循命名惯例。
有关详细信息,请参阅docs。
答案 1 :(得分:0)
尤里卡。
在2.x中,cake会自动为你创建一个模型并识别这种关系。
$this->Video->UserVideo
将生成适合HABTM联接表users_videos
的模型。然后,您可以像常规模型一样与它进行交互,它将更新数据库。