2

Я знаю, что соглашения об именах для таблиц, используемых плагинами, обычно начинаются с имени плагина, а затем модель плюрализована. Например, скажем, у меня есть плагин под названием Poll, с моделью, называемой PollPoll и другой модель PollTag, тогда результирующие имена таблиц будут poll_polls и poll_tags. У них также были бы отношения habtm, так что такое соглашение для этого имени таблицы? Я считаю, что это poll_poll_polls_poll_tags, хотя это немного избыточно, это имеет смысл, поскольку первый poll_ представляет имя плагина, а poll_polls и poll_tags - для моделей.CakePHP HABTM Соглашения об именах таблиц плагинов (для 1.3)

Также есть ли какие-либо соглашения об именах, измененные для плагинов в версии 1.3? Правильно ли указано выше?

ответ

2

Не уверен в отношении пирога 1.3 (я еще не использую его), но это, если вы правы, это звучит как совершенно приемлемый случай нарушения соглашения и определения совместимых и внешних ключей в модельных отношениях и, возможно, в плагине.

Почему ваш плагин требует таблицу соединений? Это похоже на проблему с дизайном. Возможно, есть случай, когда это необходимо, но если бы у меня было отношение HABTM с плагином, я бы добавил столбец modelname в таблицу плагина, вместо того чтобы создавать новую таблицу для каждой модели, которую я хотел использовать плагин.

+0

Обе модели в таблице соединений находятся внутри плагина. Возможно, я этого не сделал. Поэтому Poll_Poll и Poll_Tag являются частью плагина Poll. Ничто другое не использовало бы эти таблицы, кроме того, что находится в этом плагине. Спасибо! :) – Parris

+0

Но я действительно не хочу нарушать соглашение об именах, я хочу следовать соглашению, но соглашение кажется излишним и немного неуклюжим, поэтому мне было интересно, существует ли что-то более чистое. – Parris

0

На самом деле это еще не конвенция о том, что «таблицы, используемые плагинами, обычно начинаются с имени плагина, а затем модель плюрализована».

Единственное, что представляет идея, это в an example in the book, который на самом деле говорит: «Рекомендуется, чтобы вы назвали контроллеры плагинов относительно уникальными, чтобы избежать конфликтов пространства имен с родительскими приложениями ... вы можете захотеть быть творческими с именами контроллеров или добавьте имя плагина к имени класса. "

Ваши имена Table/Model/Controller/View должны соответствовать нормальным соглашениям об именах CakePHP и принимать разумные меры предосторожности, чтобы избежать столкновения пространства имен. Поэтому было бы прекрасно иметь таблицу «foo_orders» для модели «foo_order» в панели плагинов.