5

如何使用 Doctrine2 和 Symfony2 删除表?我已经生成了实体并更新了架构,现在我想删除这个结构。

4

4 回答 4

18

不确定我是否正确理解了您的问题。您删除了一个实体并想从数据库中删除其生成的表?如果是这样的话:

你不能这样做,因为 Doctrine2 只关心它知道的表 - 这意味着由实体表示的表。由于您从应用程序中删除了一些实体,Doctrine 不再认为该表属于您的应用程序。在同一个数据库中存在不同应用程序的不同表的情况。如果 Doctrine 仅仅因为它对它们一无所知而删除它们,那是没有意义的。这将是种族主义......但反对桌子。

如果您只想以编程方式删除表,则可以使用原始查询。据我所知,Doctrine 没有任何删除表格的方法。或者作为替代方案,您可以手动完成。

于 2012-07-27T14:51:56.487 回答
6

你可以做一个原始的sql。

例如在 Symfony2 控制器中:

$em = $this->getDoctrine()->getManager();
$sql = 'DROP TABLE hereYourTableName;';
$connection = $em->getConnection();
$stmt = $connection->prepare($sql);
$stmt->execute();
$stmt->closeCursor();
于 2013-11-13T14:08:08.383 回答
3

只需删除您不再手动使用的表...Doctrine 完全忽略未映射的表。

于 2012-07-27T14:19:30.757 回答
1

在 Doctrine 2.6.2 中,您可以通过删除实体类来 DROP 表,在 migrations:diff 之后,您将使用 DROP TABLE 查询获得新文件,migrations:migrate 将执行删除所需表的命令。即将被删除的类与其他实体有关系,所以我不得不粗暴地(手动)删除其他实体中对旧实体类的所有提及。刚测试过。

于 2018-09-16T13:46:16.520 回答