使用Doctrine2和Symfony2删除表格

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

我不明白这个问题...你想删除什么?还是类实体? - DonCallisto
4个回答

18

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

您不能这样做,因为Doctrine2只关心它知道的表 - 也就是由实体表示的那些表。由于您从应用程序中删除了某些实体,Doctrine不再认为该表属于您的应用程序。在同一数据库中存在不同应用程序的不同表的情况下,如果Doctrine不知道这些表,则删除它们将毫无意义。这会是种族主义...但是针对表。

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


1
您可以使用控制台命令删除表格:https://dev59.com/SHzaa4cB1Zd3GeqPTrhv#44952099 - Sébastien
我想你的意思是...tableist。 - Johnny

6
你可以执行原始的 SQL 语句。
例如,在 Symfony2 控制器中:
$em = $this->getDoctrine()->getManager();
$sql = 'DROP TABLE hereYourTableName;';
$connection = $em->getConnection();
$stmt = $connection->prepare($sql);
$stmt->execute();
$stmt->closeCursor();

3

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


1
在Doctrine 2.6.2中,您可以通过删除实体类来删除表,在执行迁移:diff后,您将获得新的DROP TABLE查询文件,migrations:migrate将执行命令以删除所需的表。即将被删除的类与其他实体存在关联,因此我不得不残忍地(手动)删除其他实体中旧实体类的所有提及。刚刚测试过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接