Каковы зарезервированные имена таблиц базы данных в CakePHP? - PullRequest
1 голос
/ 11 июня 2011

Я планировал свою базу данных, и, поскольку CakePHP не назвал свои классы со своими собственными префиксами, существует много классов, которые могут конфликтовать с классами моделей, созданными в соответствии с соглашениями об именах.

Итак, мой вопрос состоит из трехparts:

  1. Есть ли список имен таблиц базы данных, которые зарезервированы, или простой способ проверить, так ли это?Было бы больно, если бы я планировал базу данных на 100 таблиц и заметил, что некоторые таблицы и их соединения нужно будет переименовать ...

  2. Есть ли простой способ обойти это без разрывакакая-нибудь магия CakePHP?Это рекомендуется?Будет ли именование таблиц другим способом, добавляя собственный префикс 'my_' или аналогичный в начале имени таблицы?

  3. Является ли пространство имен или что-то подобное в CakePHP версии 2, чторазрешить использование всех видов имен таблиц?

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Я знаю из опыта, что вы не можете использовать имена таблиц, такие как «файлы» и «модели», потому что они создают классы, которые уже используются Cake для других вещей, таких как Файл и Модель.

Я не сталкивался с подобными проблемами, но уверен, что их там можно найти.

Я бы предложил избегать использования любого имени, используемого в основных классах тортов.

1 голос
/ 08 декабря 2011

Я знаю, что это немного старая тема, но я наткнулся на нее, ища что-то еще. Я думаю, что эта справка поможет ответить на вопрос № 2. В database.php вы можете добавить свой префикс таблицы базы данных в DATABASE_CONFIG class /app/config/database.php. Смотрите последний ключ в массиве конфигурации ниже:

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'database_name',
    'prefix' => '',
);
1 голос
/ 11 июня 2011
  1. Нет, нет. Cake не имеет значения, как вы называете свои таблицы, если вы придерживаетесь правил именования Cake. Он генерирует схемы, которые он использует для методов магической модели, при первой загрузке модели / моделей контроллером; вам не нужно поднимать палец. Смотри http://book.cakephp.org/view/903/Model-and-Database-Conventions

  2. Лучший совет: не борись с Тортом по этому поводу. Если вы действительно не можете придерживаться правил Cake, вы также можете не использовать Cake; это глупо сложно, сбивает с толку и добивается успеха просто означает, что вы потеряли большую часть тяжелых способностей Cake. Множественное использование имен ваших таблиц не так уж и плохо, и Cake будет счастлив.

  3. Эта функция уже доступна в версии 1.3 - назовите ваши таблицы так, как вам удобно (если они состоят из нескольких слов).

- Вам, вероятно, будет полезно проверить приложения для выпечки в консоли, чтобы вы могли ознакомиться с тем, что Cake хочет увидеть и как он работает на разных схемах стола.


Изменить после уточнения:

Все ваши модели, контроллеры и каталоги представлений имеют общее имя, например:

 // in /app/models/rate.php
class Rate extends AppModel {

     var $name = 'Rate';


// in /app/controllers/rates_controller.php -- note the underscore
class RatesController extends AppController {

    // controllers are capitalized + plural
    var $name = 'Rates';

// в /app/views/rates/*.ctp - Волшебный autoRender Cake ожидает найти файл вида с // то же имя, что и действие, выполняющее его - представление для Rates :: index () - index.ctp

Все ваши модели расширяют класс AppModel торта (который расширяет класс Model торта), префикс не требуется. Все контроллеры будут расширять класс AppController от Cake - к имени класса добавляется суффикс Controller, а к имени файла - _Controller.

Вы оштрафуете AppModel и AppController в / app, и они существуют явно для любых пользовательских методов / свойств для всего приложения, которые у вас могут быть. Поскольку все ваши модели / контроллеры расширяют их, наследование автоматически распределяет любые свойства / методы, которые вы в них помещаете, например, Auth. ^ _ ^

Но вы все равно можете назвать таблицу «Модели», «Контроллеры», «Представления» или что-то еще, я думаю. Свойство $ name является псевдонимом; Вы можете создать несколько экземпляров одной и той же таблицы в одной модели, присвоив ей псевдоним с другим именем. Вы можете создавать модели без таблиц и переключаться между несколькими таблицами - или базами данных, или серверами - в одной модели. Вы также можете создавать объекты данных не типа базы данных (например, плоские XML-файлы) для ваших моделей. Динамически именуемые классы / методы ($$ Model :: save () и т. Д.) - это то, что работает в любом случае. Я сделал что-то похожее в итерациях ради сушки моего приложения, и у меня не было проблем. (Хотя я лично сомневаюсь, что на самом деле создание локальной модели с именем Model стоило бы усилий, которые вы вложили в эксперимент ...)

И на этой ноте API Cake описывает все его классы, их методы и т. Д. (Генерирует комментарии в кодовой базе):

http://api13.cakephp.org/classes

НТН. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...