CakePHP MySQL вопрос соглашения об именах баз данных - PullRequest
2 голосов
/ 11 января 2011

Во-первых: я прочитал правила соглашения об именах из кулинарной книги CakePHP, так что не направляйте меня туда :) Возможно, я что-то неправильно понимаю, и если да, поправьте меня;)

У меня проблема в том, что у меня есть таблицы:

  • товар
  • квеста

Тогда у меня были таблицы:

  • item_has_quest_requirements
  • quest_has_item_requirements
  • quest_has_item_rewards
  • quest_has_item_recommends

Это просто таблицы HABTM с двумя первичными ключами, соединяющими эти две таблицы. Теперь, некоторые из них также имеют свои собственные столбцы, поэтому я не поместил их в одну таблицу. Например, item_has_quest_requirements имеет только ключи, но quest_has_item_requirements также имеет поле amount , как и награды и рекомендует также.

Однако, если я следую соглашениям об именах CakePHP, мне НЕ следует использовать составные первичные ключи, и если я хочу соединить две таблицы вместе как таблицы HABTM, я должен именовать таблицы в алфавитном порядке по именам таблиц. Что означает AFAIK, что эти таблицы ВСЕ станут: items_quests таблиц, что невозможно.

Тогда единственный способ создать совершенно новую дополнительную таблицу, такую ​​как: quest_requirements , в котором будет столбец сумма , а затем таблица HABTM будет выглядеть следующим образом: items_quest_requirements ?

Это то, о чем я размышлял, поэтому не могли бы вы немного осветить, какой подход лучше?

Ответы [ 2 ]

3 голосов
/ 11 января 2011

Не существует соглашений об именах, если между двумя таблицами несколько связей. В этом случае вам необходимо вручную указать соответствующие таблицы в своих моделях, см. http://book.cakephp.org/view/1039/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-1044.

Однако вы упомянули, что некоторые таблицы соединений будут содержать дополнительные столбцы. Для такого сценария может быть лучше использовать Соединение моделей (также известное как "hasMany through") вместо ассоциаций HABTM.

0 голосов
/ 11 января 2011

Попробуйте воспроизвести его с http://cakeapp.com,, что заставляет вас использовать соглашения по именованию тортов.И позволяет впоследствии загрузить схему БД.

...