如何删除Doctrine 2中的实体?我想通过命令行和PHP知道如何做到这一点。谢谢!
编辑: 我不确定我是否正确地提出这个问题(我是Doctrine的新手)。我想将Entity文件保留在目录中,但我想从数据库中删除它的表。这源于基于Zend的模块化架构,其中可以安装/卸载模块而无需移除模块目录。如果卸载了一个模块,我希望删除它的实体。反之亦然。
答案 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的文档中找到所有信息: