Symfony doctrine: build-all-and-load без потери записей в базе данных
Я новичок в Symfony+доктрине, но довольно опытен в разработке веб-приложений в целом (в основном с использованием Zend Framework). Я начал новый проект с использованием Symfony, и мне это нравится.
У меня есть несколько приспособлений в моей папке/data / fixtures/, которые загружаются всякий раз, когда я обновляю схему и делаю:
sf doctrine:build --all --and-load
Проблема в том, что добавление светильников действительно утомительно, в то время как мой интерфейс приложения довольно быстро загружает данные. Итак, я загружаю тестовые данные в базу данных (используя мое приложение), но затем всякий раз, когда я изменяю схему (и выполняю вышеприведенную инструкцию), она возвращает данные только к тому, что находится в светильниках.
В руководстве я прочитал, что опция --and-append не будет перезаписывать данные в базе данных. Но параметр -- all говорит, что он сбрасывает базу данных.
Очевидно, что если я удалю столбец из схемы, то я потеряю эту информацию, но я просто хочу сохранить свои новые записи.
Извините, если я упускаю что-то очень очевидное. Заранее спасибо за любую помощь, которую вы можете оказать!
4 ответов:
Использовать
symfony doctrine:build --all-classesИз документации (
symfony help doctrine:build):You can also generate only class files by using the --all-classes shortcut option. When this option is used alone, the database will not be modified. ./symfony doctrine:build --all-classes
Я стараюсь, чтобы мой процесс изменения схемы был достаточно гладким, чтобы я делал их, как только я думаю, что они необходимы, а не откладывал их. Уничтожение всех данных, с которыми я работал,-это определенное отключение, которое увеличит умственное сопротивление и заставит меня использовать проблемную схему дольше, чем я должен.
Итак-я думаю, что Вы делаете это правильно с помощью имеющихся у вас приспособлений, вам просто нужно сбросить больше (
symfony doctrine:data-dump) введенных в пользовательский интерфейс данных в приспособления, прежде чем перегрузка. Вам придется переписать или перестроить светильники для некоторых изменений схемы, но это просто так. Инвестирование в рабочие приспособления дает вам гибкость для внесения изменений в схему.
Короче говоря, чтобы сохранить ваши данные, не запускайте
build --allудаляет базу данных, и вы теряете информацию, которая находится в ней.--and-loadзагружает все, что у вас есть в ваших приспособлениях, обратно в него. Так что, насколько я знаю, нет ни одной команды, чтобы сделать то, что вы ищете. Из того, что я понял,--and-loadи--and-appendпохожи, так как вы можете запускатьdoctrine:data-loadповторно, и это не будет стирать существующие данные.build --all, а вносите изменения в базу данных через SQL, обновляйте схему, а затем просто повторите генерацию моделей.
Вы можете внести изменения в БД с помощью миграции доктрины или самостоятельно с помощью сценариев sql (что является ИМО более безопасным вариантом) или вручную в БД, если вы разрабатываете. Обычно я просто перестраиваю классы моделей, чтобы отразить новые изменения схемы (через doctrine:build), и просто делаю полный сброс БД и периодически воссоздаю, чтобы убедиться, что все работает нормально.
Comments