Задать вопрос
@xbox

Как правильно добавить поля и таблицы БД в рабочий проект на Symfony 1.2, чтобы ничего не поломать?

Добрый день.

Небольшое вступление.
Есть рабочий сайт на Symfony 1.2, который создавала одна хорошая Веб-студия. (Это к тому, что качество кода нормальное и проект изначально заточен для совместной работы нескольких программистов). Услугами веб-студии последние пару лет больше не пользуемся, потому что даже на небольшие изменения уходит много времени и финансов. Обычно быстрее и легче сделать все самому.

Я немного владею навыками программирования на php и вношу изменения своими силами, но с Symfony знаком очень поверхностно. За время, которое я занимаюсь правками сайта, я разобрался со структурой папок в проекте. Модули, темплейты, лайауты, акшены, роутинг в сифони, - это то, что я осилил. С классами работать не умею. Изменить что-то существующее в проекте для меня обычно не проблема, а вот создать что-то новое я во многих случаях сам не могу.


Часто возникает необходимость добавить поле в существующую таблицу Базы Данных или даже создать новую таблицу. Сделать изменения в Mysql базе данных (через phpmyadmin итп) это не проблема.
А как добавить поле в таблицу БД или создать новую таблицу в БД, чтобы во всех местах, где это необходимо, симфони все прописала, и чтобы не поломался рабочий проект, а данные в БД сайта сохранились?

Если я к существующему полю таблицы обращаюсь, например, $item->getTitle(), то после добавления нового поля в БД, я смогу к нему обращаться так $item->getNewfield() ? При правильном добавлении поля Симфони попишет все, что для этого нужно?

P.S. Symfony исопользует Propel.
И еще один момент, на всякий случай. Я вручную создавал/менял индексы таблиц в рабочей базе данных Mysql. Индексы работают правильно. Но в каких-либо конфигах симфони ничего не прописывал. При изменении структуры БД командами симфони, не хотелось бы чтобы эти индексы слетели.
  • Вопрос задан
  • 4392 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя Quber К ответам на вопрос (2)
Quber
@Quber
PHP Team lead
Не знаю как это устроено в первой части. Работаю со второй. На dev версии это делается очень просто, одной командой:
php app/console doctrine:schema:update --force
Она создаст все необходимые поля, индексы, изменит где необходимо и что необходимо.

Для боевой версии это решение разработчики не рекомендуют:
Warning! This should be done only in dev environment! We recommend using Doctrine migrations, to safely update your schema.


Рекомендуется использовать миграции. Это бандл для доктрины DoctrineMigrationsBundle. Тут подробно написано про него и как им пользоваться symfony.com/doc/current/bundles/DoctrineMigrations...
Ответ написан
Комментировать