CakePHP mysql数据库命名约定问题

时间:2011-01-11 08:01:20

标签: mysql cakephp naming-conventions

首先:我已经阅读了CakePHP食谱中的命名约定规则,所以不要指示我:)我可能会理解错误的东西,如果是这样,请纠正我;)

我遇到的问题是我有桌子:

  • 任务

然后我有桌子:

  • item_has_quest_requirements
  • quest_has_item_requirements
  • quest_has_item_rewards
  • quest_has_item_recommends

其中只有HABTM表,其中有2个主键连接这两个表。现在,他们中的一些也有他们的OWN特定列也是我没有把它们放在同一个表中的原因。例如, item_has_quest_requirements 只包含密钥,但 quest_has_item_requirements 也有金额字段,奖励和建议也是如此。

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

那么唯一的方法是创建全新的额外表格,如: quest_requirements ,其中包含金额列,然后将HABTM表格设为: items_quest_requirements

这就是我一直在脑子里想的,所以你能指点一下最好的方法吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

尝试使用http://cakeapp.com重现它,它会强制您使用蛋糕命名约定。并允许您随后下载数据库架构。