【问题标题】:CakePHP, working with HABTM tablesCakePHP,使用 HABTM 表
【发布时间】:2012-08-03 22:46:06
【问题描述】:

我正在使用 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 个标志是两个模型之间关系的指标(此视频是否被观看?是否被评分?等等)

我目前正在构建自己的查询,这是我的引导设置。我的最终目标是在两个模型的关系之间添加属性。这是解决这个问题的正确方法吗,还是有更好的方法?

【问题讨论】:

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


    【解决方案1】:

    为了维护HABTM,您可以维护连接表。 HABTM 的连接表的蛋糕约定是:

    这个新连接表的名称需要包含两个模型的名称 涉及,按字母顺序,并用下划线(_ )。表的内容应该是两个字段,每个外键 (应该是整数)指向 涉及的模型。为避免任何问题 - 不要定义组合的主要 这两个字段的键,如果您的应用程序需要它,您可以 定义唯一索引。如果您打算添加任何额外信息 这个表,添加一个额外的主键字段是个好主意 (按照约定'id')使在桌子上的操作和其他任何操作一样容易 型号。

    所以它对你来说似乎很好。但您必须遵循命名约定。

    更多详情请见docs

    【讨论】:

    • 如您所见,我已经遵循了命名约定。建立 cake docs 中描述的 HABTM 关系没有问题,我只想使用该关系变得更具描述性(hasRated、hasWatched 等),并且想知道 cake 是否有更新关系的方法本身。
    【解决方案2】:

    尤里卡。

    在 2.x 中,cake 会自动为您创建模型并识别关系。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多