Как правильно добавить поля и таблицы БД в рабочий проект на Symfony 1.2, чтобы ничего не поломать?
Добрый день.
Небольшое вступление.
Есть рабочий сайт на Symfony 1.2, который создавала одна хорошая Веб-студия. (Это к тому, что качество кода нормальное и проект изначально заточен для совместной работы нескольких программистов). Услугами веб-студии последние пару лет больше не пользуемся, потому что даже на небольшие изменения уходит много времени и финансов. Обычно быстрее и легче сделать все самому.
Я немного владею навыками программирования на php и вношу изменения своими силами, но с Symfony знаком очень поверхностно. За время, которое я занимаюсь правками сайта, я разобрался со структурой папок в проекте. Модули, темплейты, лайауты, акшены, роутинг в сифони, - это то, что я осилил. С классами работать не умею. Изменить что-то существующее в проекте для меня обычно не проблема, а вот создать что-то новое я во многих случаях сам не могу.
Часто возникает необходимость добавить поле в существующую таблицу Базы Данных или даже создать новую таблицу. Сделать изменения в Mysql базе данных (через phpmyadmin итп) это не проблема. А как добавить поле в таблицу БД или создать новую таблицу в БД, чтобы во всех местах, где это необходимо, симфони все прописала, и чтобы не поломался рабочий проект, а данные в БД сайта сохранились?
Если я к существующему полю таблицы обращаюсь, например, $item->getTitle(), то после добавления нового поля в БД, я смогу к нему обращаться так $item->getNewfield() ? При правильном добавлении поля Симфони попишет все, что для этого нужно?
P.S. Symfony исопользует Propel.
И еще один момент, на всякий случай. Я вручную создавал/менял индексы таблиц в рабочей базе данных Mysql. Индексы работают правильно. Но в каких-либо конфигах симфони ничего не прописывал. При изменении структуры БД командами симфони, не хотелось бы чтобы эти индексы слетели.
Не знаю как это устроено в первой части. Работаю со второй. На 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.