当我们最初设计项目时,我们有几个迄今为止尚未使用的实体(我们不打算在不久的将来实现它们)。呃,我想把它们从我的项目中删除。我会这样进行(所有步骤手动执行):
- 从我当前使用的实体中删除所有关系
- 删除docrime ORM文件
src/Resources/config/doctrine
- 从
src/Entity
中删除类PHP文件 - 从数据库中删除表
我想知道的是:是否有任何例程(例如控制台命令)可以支持此过程?例如,如果我运行
php app/console doctrine:schema:update --dump-sql
在删除了所有关系和文件之后,我得到了删除相应表的SQL语句吗?
从代码中删除实体后,可以使用以下控制台命令删除表:
php bin/console doctrine:schema:update --complete --dump-sql
注意--complete
选项的使用。
以下是doctrine:schema:update
帮助文本中的相关部分:
选项:
--complete
nbsp nbsp nbsp nbsp;如果已定义,则数据库中与当前元数据无关的所有资产都将被删除
[…]帮助:
[…]
最后,请注意,如果传递了
--complete
选项,此任务将删除当前元数据所描述的而非的所有数据库资产(例如表等)。换句话说,如果没有此选项,此任务将不影响数据库中存在的任何"额外"表,但这些表没有由任何元数据描述。提示:如果您有一个包含不应由ORM管理的表的数据库,您可以使用DBAL功能在全局级别上筛选表和序列:
$config->setFilterSchemaAssetsExpression($regexp);
要删除symfony 3中的表,只需运行迁移,未使用的表将从DB:中删除
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
删除实体的步骤可以。
你不能从Doctrine中删除一个表,因为Doctrine不知道它。看看这个问题:
使用Doctrine2和Symfony2 删除表