Как сделать базу данных вашей модели переносимой в CakePHP?

StackOverflow https://stackoverflow.com/questions/603578

Вопрос

Я не очень разбираюсь в тортах..Так вот мои вопросы..мы разрабатываем приложение на 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://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

http://api.cakephp.org/class/schema-shell

Вам нужно использовать «схему торта» для управления вашей БД.Это будет обрабатывать все специфические вещи БД при создании базы данных.

http://book.cakephp.org/view/735/Generating-and-using-Schema-files

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top