【问题标题】:CakePHP mysql database naming conventions questionCakePHP mysql 数据库命名约定问题
【发布时间】:2011-01-11 08:01:20
【问题描述】:

首先:我已经阅读了 CakePHP 食谱中的命名约定规则,所以不要把我指向那里 :) 我可能理解不正确,如果是这样,请纠正我 ;)

我遇到的问题是我有表格:

  • 项目
  • 任务

然后我有桌子:

  • item_has_quest_requirements
  • quest_has_item_requirements
  • quest_has_item_rewards
  • quest_has_item_recommends

这只是具有连接这 2 个表的 2 个主键的 HABTM 表。现在,他们中的一些人也有自己的特定列,这也是我没有将它们放入同一张表的原因。例如,item_has_quest_requirements 只有键,但 quest_has_item_requirements 也有 amount 字段,奖励和推荐也是如此。

但是,如果我遵循 CakePHP 命名约定,我不应该使用复合主键,如果我想将 2 个表连接在一起作为 HABTM 表,我应该按表名的字母顺序命名表。这意味着 AFAIK 这些表将全部变为:items_quests 表,这是不可能的。

然后唯一的方法是创建全新的额外表,例如: quest_requirements 将具有 amount 列,然后将 HABTM 表设为: items_quest_requirements

这就是我一直在想的,所以你能告诉我什么是最好的方法吗?

【问题讨论】:

  • AFAIK 无法在 CakePHP 的连接 HABTM 表中存储其他数据。如果我错了,请有人纠正我。

标签: mysql cakephp naming-conventions


【解决方案1】:

当您在两个表之间有 多个 关联时,没有命名约定。在这种情况下,您必须在模型中手动指定涉及的表,详情请参阅http://book.cakephp.org/view/1039/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-1044

但是,您提到某些连接表将包含其他列。对于这种情况,使用Join Models(也称为“hasMany through”)而不是 HABTM 关联可能是更好的方法。

【讨论】:

  • +1。 OP 应该为 item_has_quest_requirements 关联定义一个 HABTM 关系,然后为其他三个关联模型。
【解决方案2】:

尝试使用http://cakeapp.com 复制它,它会强制您使用蛋糕命名约定。并允许您事后下载数据库模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多