Intereting Posts

Как удалить класс объекта в проекте Symfony2

Когда мы изначально разрабатывали наш проект, у нас было несколько объектов, которые на сегодняшний день не используются (и мы не планируем их реализовать в ближайшем будущем). Ergo Я хочу удалить их из своего проекта. Я бы сделал следующее (все шаги выполнялись вручную):

  1. Удалите все отношения из моих существующих в настоящее время объектов.
  2. Удалить файл ORM доктрины src/Resources/config/doctrine
  3. Удалить файл PHP класса из src/Entity
  4. Удалить таблицу из базы данных

Что я хотел бы знать: Существуют ли какие-либо подпрограммы (например, консольные команды), которые могут поддерживать эту процедуру? Например, если я запускаю

 php app/console doctrine:schema:update --dump-sql 

после удаления всех отношений и удаления файлов, я получаю инструкцию SQL, которая удаляет соответствующие таблицы (таблицы)?

Solutions Collecting From Web of "Как удалить класс объекта в проекте Symfony2"

Ваши действия по удалению объекта в порядке.

Вы не можете удалить таблицу из Doctrine, поскольку Doctrine не знает об этом. Посмотрите на этот вопрос:

Удаление таблицы с помощью Doctrine2 и Symfony2

После удаления объектов из вашего кода вы можете использовать следующую консольную команду для удаления таблиц:

 php bin/console doctrine:schema:update --complete --dump-sql 

Обратите внимание на использование опции --complete .


Вот соответствующие части из doctrine:schema:update текст справки:

Опции:

--complete Если определено, все активы базы данных, которые не относятся к текущим метаданным, будут удалены.
[…]

Помогите:

[…]

Наконец, имейте в виду, что если опция --complete передана, эта задача будет удалять все базы данных (например, таблицы и т. Д.), Которые не описываются текущими метаданными. Другими словами, без этой опции эта задача оставляет нетронутые любые «лишние» таблицы, которые существуют в базе данных, но которые не описываются никакими метаданными.

Подсказка. Если у вас есть база данных с таблицами, которые не должны управляться ORM, вы можете использовать функциональность DBAL для фильтрации таблиц и последовательностей на глобальном уровне:

 $config->setFilterSchemaAssetsExpression($regexp); 

для удаления таблицы в symfony 3 вы можете просто запустить миграцию, и таблица, которая не используется, будет удалена из БД:

 php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate