Как вы делаете базу данных вашей модели переносимой в CakePHP? - PullRequest
0 голосов
/ 02 марта 2009

Я не очень знаком с тортом. Итак, вот мои вопросы ... мы разрабатываем приложение на mysql, но в конечном итоге оно может потребоваться для развертывания в mssql или oracle. Как мы можем быть уверены, что у нас не будет странных проблем с нашими первичными ключами? В mysql они являются столбцами AUTO INCREMENT, но в IIRC в oracle вам нужно использовать последовательности ... есть ли способ сделать это прозрачным изменением? Я задумываюсь над этим?

У кого-нибудь есть опыт переключения поставщиков баз данных в приложении CakePHP? какие-нибудь указатели или вещи, за которыми нужно следить?

Ответы [ 3 ]

1 голос
/ 04 марта 2009

Следующие практики прекрасно работают для меня

Я использую схемы тортов (как правило, я настраиваю 1 файл схемы для каждой группы моделей. I.E. Пользователь, роль, профиль могут быть в одном файле UsersSchema)

Также обратите внимание на использование deburesgable.com FixturesShell - он позволяет вам импортировать тестовые примеры в живую базу данных. Отлично подходит для настройки исходной группы пользователей и ролей из файла схемы.

Кроме того, если вы установите для поля id значение VARCHAR (36) вместо INT (#), торт будет автоматически использовать идентификаторы стиля UUID. Это означает, что у вас есть FAR FAR меньшая вероятность того, что ваши данные столкнутся со значением id, если вам нужно переместить данные в другое приложение или сервер.

Оболочка fixtures также имеет инструмент командной строки для генерации uuids (так что вы можете добавить их в переменную $ records в приспособлении для вставки и т. Д.)

В итоге - используйте оболочку схем CakeSchema, оболочку fixtures из debuggable.com и значения UUID для ваших идентификаторов, и она должна предоставить вам переносимый инструмент создания структуры, переносной инструмент вставки данных и формат переносимого поля идентификатора.

http://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

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

1 голос
/ 02 марта 2009

В файле конфигурации базы данных Cake вы выбираете свой драйвер (см. http://book.cakephp.org/view/40/Database-Configuration). Затем, если вы установите свой PK (который также будет вашим A_I-столбцом при использовании MySQL) с именем поля id, Cake автоматически обработать вставку auto_increment. Я бы предположил (NB: не пробовал Cake с чем-то еще), что Cake позаботится о столбцах A_I в чем-то вроде Oracle.

Cake использует свой собственный уровень абстракции БД - но включенные абстракции охватывают немало, и он будет работать так, как указано (т. Е. Он будет обрабатывать ваши вещи с автоматическим приращением за вас).

Короче говоря, вы, вероятно, задумывались. Тем не менее, я бы смоделировал небольшое приложение для торта, а затем попытался переключить базы данных за ним (измените конфигурацию вашей базы данных, и ваше приложение должно автоматически переключаться).

НТН, Travis

0 голосов
/ 03 марта 2009

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

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

...