Я хочу сделать очень простую вещь, но не могу найти решения.
Я начал разрабатывать свое приложение с помощью Symfony4 в комплекте с Doctrine. Вначале я проектировал модель базы данных, но в процессе разработки я понял, что оригинальное решение не подходит для того, что я хочу делать. Прямо сейчас я хочу удалить атрибут из объекта. В простом SQL я бы сделал ALTER TABLE table DROP COLUMN column, а затем воссоздал бы его снова с новыми параметрами. Однако это решение дало мне ошибку в Doctrine, поэтому я также изменил модель PHP. Опять еще одна ошибка. Ладно, это не похоже на то, как я хочу идти.
Есть ли какое-нибудь решение моей проблемы, кроме как слишком глубоко копаться в Доктрине? Лучше всего было бы что-то простое, как описано в команде SQL выше?
doctrine: schema: update плохо, если у вас есть среды dev / prod / etc. Лучше используйте миграции.
Спасибо, да, я хочу иметь среду разработки / производства.




Когда дело доходит до доктрины с Symfony, вы должны забыть о таблицах, столбцах и т. д. И начать думать с помощью объектов (иначе нет смысла использовать доктрину для абстракции). Для вашей проблемы вы должны просто удалить атрибут в своей сущности.
Тогда вам следует использовать:
php bin/console doctrine:migrations:diff
Это создаст файл миграции в папке / migrations. Этот файл будет содержать SQL, который будет выполнять доктрина. Он позволяет вам проверить, соответствует ли запрос ожидаемому, в противном случае вы можете напрямую изменить его в этом файле или адаптировать свою сущность и сгенерировать новый файл миграции.
Когда вы довольны этим, вы можете выполнить его с помощью:
php bin/console doctrine:migrations:migrate
Большой! Это именно то, что я искал. Спасибо.
вы изменяете определение сущности в своей «модели php» и выполняете
bin/console doctrine:schema:update --dump-sql --force' to update your physical database. you can executebin / console doctrine: schema: validate` перед тем, как проверить, есть ли какие-либо ошибки в определениях ваших сущностей.