CakePHP,使用HABTM表

时间:2012-08-03 22:46:06

标签: php mysql database cakephp has-and-belongs-to-many

我正在使用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方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

要维护HABTM,您可以维护联接表。 HABTM的联接表的蛋糕约定是:

  

此新连接表的名称需要包含两个模型的名称   涉及,按字母顺序排列,并用下划线分隔(_   )。表的内容应该是两个字段,每个外键   (应该是整数)指向两个主键   涉及的模型。为避免任何问题 - 请勿定义组合的主要   这两个字段的关键,如果您的应用程序需要它,您可以   定义唯一索引。如果您打算添加任何额外信息   在此表中,最好添加一个额外的主键字段   (根据惯例'id')使表格上的表演像其他任何一样简单   模型。

所以它似乎对你好。但是你必须遵循命名惯例。

有关详细信息,请参阅docs

答案 1 :(得分:0)

尤里卡。

在2.x中,cake会自动为你创建一个模型并识别这种关系。

$this->Video->UserVideo将生成适合HABTM联接表users_videos的模型。然后,您可以像常规模型一样与它进行交互,它将更新数据库。