2012-07-27 64 views
4

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

+0

我不明白的问题....要删除什么?也是类实体? – DonCallisto 2012-07-27 13:57:07

回答

14

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

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

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

+0

您实际上可以使用控制台命令删除这些表:https://stackoverflow.com/a/44952099/3409662 – user3409662 2017-07-06 14:45:34

3

只需删除您不再使用的表格......原则完全忽略未映射的表格。

5

你可以做一个原始的sql。

例如,在Symfony2的控制器:

$em = $this->getDoctrine()->getManager(); 
$sql = 'DROP TABLE hereYourTableName;'; 
$connection = $em->getConnection(); 
$stmt = $connection->prepare($sql); 
$stmt->execute(); 
$stmt->closeCursor();