Изменение базы данных в Symfony (доктрина) - PullRequest
3 голосов
/ 17 сентября 2010

Я новичок в Symfony (1.4 + Doctrine), но есть момент, который пугает меня. Кажется, что когда кто-то хочет изменить модель, единственный способ - изменить схему базы данных (config/doctrine/schema.yml) и затем вызвать symphony doctrine:build, , которая сбрасывает все текущие данные в базе данных .

Мне не кажется, что это нормальный путь. Что если через год мое приложение будет запущено, я решу, что мои пользователи должны иметь возможность добавить свою страницу facebook в профиль? В других средах (я привык к CakePHP) это просто вопрос добавления поля в таблицу users и изменения файла модели и вида профиля. В Symfony ... ну, я не знаю, вот почему я спрашиваю здесь. Я уверен, что что-то упустил, так как дизайнеры Symfony наверняка подумали, что кто-то может захотеть провести рефакторинг приложения после запуска. Как правильно это сделать?

Ответы [ 3 ]

2 голосов
/ 17 сентября 2010

Вам нужно изучить структуру миграции.Это в основном состоит из создания классов, которые описывают изменение схемы.Вы можете посмотреть учебник по Symfony 1.2 здесь: http://www.symfony -project.org / doctrine / 1_2 / ru / 07-Migrations , и большая часть этого будет действительна и для 1.4.

0 голосов
/ 15 декабря 2014

Миграции - это верный способ сделать это.Но если по какой-то причине вы не хотите использовать миграции, другой вариант - обновить ваш schema.yml, затем перестроить ваши модели и т. Д., Например:

symfony doctrine:build-model
symfony doctrine:build-forms
symfony doctrine:build-filters
symfony doctrine:build-sql

При развертывании этого кодавам нужно будет вручную обновить вашу базу данных любыми полями, которые вы добавляете / изменяете.

0 голосов
/ 18 сентября 2010

Я никогда не использую build-all, когда в моей базе данных есть данные.Я просто использую классы сборки для моделей и build-sql, затем я изменяю базу данных, добавляя или изменяя поля вручную.

...