2011-01-11 62 views
2

第一:我已經讀CakePHP的食譜的命名約定規則,所以不要告訴我那裏:)我可能是雖然東西的理解不正確,如果是請指正;)CakePHP的MySQL數據庫命名約定質疑

問題的具有1M的是,我有表:

  • 項目
  • 任務

然後,我有表:

  • item_has_quest_requirements
  • quest_has_item_requirements
  • quest_has_item_rewards
  • quest_has_item_recommends

它們只是HABTM表2連接這些2個表的主鍵。現在,他們中的一些人也有他們自己的特定專欄,這就是爲什麼我沒有把他們放在同一張桌子上。例如,item_has_quest_requirements只是鑰匙,但quest_has_item_requirements也有數額字段作爲獎勵和建議也。但是,如果我遵循CakePHP的命名約定,我不應該使用複合主鍵,如果我想將兩個表連接爲HABTM表,我應該按照表名按字母順序命名錶。這意味着AFAIK這些表將全部變爲:items_quests表是不可能的。

會的唯一方法是再創造完全新的額外的表像: quest_requirements這將有列,然後作出這樣的HABTM表:items_quest_requirements

這就是我一直在腦海中滾動的,所以你可以開導一下什麼是最好的方法?

+0

AFAIK無法將附加數據存儲在CakePHP的加入HABTM表中。有人請糾正我,如果我錯了。 – 2011-01-11 16:11:30

回答

3

當兩個表格之間有多個關聯時,沒有命名約定。在這種情況下,您必須在模型中手動指定相關表格,詳細信息請參見http://book.cakephp.org/view/1039/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-1044

但是,你提到一些連接表將包含額外的列。對於這種情況,使用Join Models(也稱爲「hasMany through」)而不是HABTM關聯可能是更好的方法。

+1

+1。 OP應該爲`item_has_quest_requirements`關聯定義一個HABTM關係,然後爲其他三個關聯定義一個HABTM關係。 – Stephen 2011-01-11 20:47:21

0

嘗試使用http://cakeapp.com重現它,它強制您使用蛋糕命名約定。並允許您以後下載數據庫模式。