防止Doctrine migration diff删除表

时间:2014-04-09 01:39:47

标签: doctrine doctrine-migrations

我目前正处于“Doctrinizing”大型现有数据库的过程中。这个过程非常有效,我们可以慢慢地用实体和DQL替换旧的原始查询代码。

我们最近发现了令人敬畏的Doctrine Migrations项目,它似乎是管理数据库更改的理想选择。然而,我们遇到了一些麻烦。

我们的数据库非常庞大,我们正在逐步重构应用程序的各个方面。我们目前有大约40%的数据库表示为实体。问题是当我们在部分转换的数据库上运行“diff”时,diff想要删除大量的表,因为这些表不存在任何实体。我们可以手动编辑差异,但它会变得非常麻烦并且可能容易出错。

问题是;它可以创建一个diff并告诉diff进程不要删除任何没有实体的表吗?

1 个答案:

答案 0 :(得分:11)

如果您正在使用Symfony2,您只需添加如下所示的配置:http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables

在每个命令的基础上,您可以为那些应该考虑差异的表指定正则表达式,例如:

app/console doctrine:migrations:diff --filter-expression=/^t_/

(仅为名称以t_开头的那些表生成diff而忽略另一个。)