Как сделать базу данных вашей модели переносимой в CakePHP?
-
03-07-2019 - |
Вопрос
Я не очень разбираюсь в тортах..Так вот мои вопросы..мы разрабатываем приложение на mysql, но в конечном итоге его может потребоваться развернуть в mssql или oracle.Как нам гарантировать, что у нас не возникнет странных проблем с нашими первичными ключами?В mysql это столбцы AUTO INCREMENT, но IIRC в oracle вам нужно использовать последовательности...есть ли способ сделать это прозрачным изменением?Я слишком много об этом думаю?
Есть ли у кого-нибудь опыт смены поставщиков баз данных в приложении cakephp?какие-нибудь указатели или вещи, на которые стоит обратить внимание?
Решение
В файле конфигурации базы данных Cake вы выбираете свой драйвер (см. http://book.cakephp.org/view/40/Database-Configuration).Затем, если вы установите свой PK (который также будет вашим столбцом A_I при использовании MySQL) с именем поля id
, Cake автоматически обработает вставку auto_increment.Я бы предположил (Примечание:не пробовал Cake с чем-то еще), что Cake позаботится о столбцах A_I в чем-то вроде Oracle.
Cake использует свой собственный уровень абстракции БД, но включенные абстракции покрывают довольно большую часть, и он будет работать так, как указано (т.он позаботится о вашем автоматическом увеличении за вас).
Короче говоря, вы, вероятно, слишком много думаете.Тем не менее, я бы смоделировал небольшое приложение для торта, а затем попробовал переключить за него базы данных (измените конфигурацию базы данных, и ваше приложение должно автоматически переключиться).
HTH, Трэвис
Другие советы
Следующие практики отлично работают для меня
Я использую схемы тортов (я обычно создаю по одному файлу схемы для каждой группы моделей.И.Е.Пользователь, роль и профиль могут находиться в одном файле UsersSchema)
Также обратите внимание на использование FixturesShell на сайте debuggable.com — он позволяет импортировать фикстуры тестовых сценариев в действующую базу данных.Отлично подходит для настройки начальной группы пользователей и ролей из файла схемы.
Кроме того, если вы установите для поля 'id' значение VARCHAR(36) вместо INT(#), торт будет автоматически использовать идентификаторы стиля UUID.Это означает, что у вас НАМНОГО МЕНЬШЕ вероятность того, что ваши данные будут иметь конфликты значений идентификаторов, если вам нужно переместить данные в другое приложение или сервер.
Оболочка фикстур также имеет инструмент командной строки для генерации uuid (так что вы можете добавить их в переменную $records в фикстуре для вставки и т. д.)
Вкратце: используйте оболочку схем CakeSchema, оболочку фикстур с сайта debuggable.com и значения UUID для ваших идентификаторов, и это должно предоставить вам портативный инструмент создания структуры, портативный инструмент вставки данных и переносимый формат поля идентификатора.
Вам нужно использовать «схему торта» для управления вашей БД.Это будет обрабатывать все специфические вещи БД при создании базы данных.
http://book.cakephp.org/view/735/Generating-and-using-Schema-files