如何删除Doctrine 2中的实体?

时间:2011-11-08 23:53:37

标签: doctrine-orm

如何删除Doctrine 2中的实体?我想通过命令行和PHP知道如何做到这一点。谢谢!

编辑: 我不确定我是否正确地提出这个问题(我是Doctrine的新手)。我想将Entity文件保留在目录中,但我想从数据库中删除它的表。这源于基于Zend的模块化架构,其中可以安装/卸载模块而无需移除模块目录。如果卸载了一个模块,我希望删除它的实体。反之亦然。

2 个答案:

答案 0 :(得分:0)

据我所知,没有办法做到这一点。您必须手动删除关联的数据库表。

如果要从实体生成过程中排除它,可以从实体中删除\ ORM注释。

答案 1 :(得分:0)

我做了一些研究Doctrine的API并最终弄明白了:

$classes = array();
$entityManager = ...
$classes[] = $entityManager->getClassMetadata('Entities\MyEntity1');
$classes[] = $entityManager->getClassMetadata('Entities\MyEntity2');
$classes[] = $entityManager->getClassMetadata('Entities\MyEntity3');
$classes[] = $entityManager->getClassMetadata('Entities\MyEntity4');

//Doctrine Schema Tool
$st = new Doctrine\ORM\Tools\SchemaTool( $entityManager );
$st->dropSchema($classes);

这将从数据库中删除与Entities \ MyEntity1,2,3和4相关联的表。

此外,使用与上一行完全相同的代码,以下方法非常有用:

$st->createSchema($classes);

$st->updateSchema($classes);

您可以在Doctrine的文档中找到所有信息:

http://www.doctrine-project.org/projects/orm/2.0/api