如何使用Doctrine删除所有数据而不破坏参照完整性?

5 php doctrine foreign-keys doctrine-1.2

为Symfony 1.4组装了一个单元测试插件,试图自动管理数据库,类似于Django测试框架的方式(在测试之间销毁和重建数据库).

在第一次测试运行之前销毁和重建数据库是有意义的,因为架构可能在开发期间发生了变化,并且让开发人员让他的测试数据库与他的模型手动同步也就是非常可悲.

然而,在第一次测试运行之后,我发现删除所有数据通常更快,这将是一个相当简单的任务,除了外键问题,这需要以正确的顺序删除数据.

对于MySQL,这不是问题; 简单地说SET FOREIGN_KEY_CHECKS = 0,你可以破坏你心灵内容的参照完整性(SET FOREIGN_KEY_CHECKS = 1当然,直到时间到了,但在这种情况下,没有数据可以留下,所以MySQL没有什么可抱怨的).

但只有测试数据库使用MySQL时,这才有效.对于任何其他DBMS(尤其是Sqlite),这将失败.

Doctrine 1.2是否提供了删除每个表中所有数据的方法,或者是否有"跟随"关系的方法(即,确定哪些表具有外键并首先从中删除)?

小智 0

Doctrine_Data->purge()充分利用Doctrine_Connection_UnitOfWork->buildFlushTree()我想要完成的事情。

有点有道理,因为Doctrine_Data_Import->doImport()(即symfony doctrine:data-load)已经提供了我试图重新发明的功能......我怎么错过了那个?:P