Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Doctrine2和Symfony2删除表_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 使用Doctrine2和Symfony2删除表

Php 使用Doctrine2和Symfony2删除表,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,如何使用Doctrine2和Symfony2删除表?我已经生成了实体并更新了架构,现在我想删除此结构。只需删除您不再手动使用的表……条令完全忽略未映射的表。不确定我是否正确理解了您的问题。您删除了一个实体,是否还想从数据库中删除其生成的表?如果是: 您不能这样做,因为Doctrine2只关心它所知道的表——也就是说由实体表示的表。因为您从应用程序中删除了一些实体,所以条令不再认为该表属于您的应用程序。在某些情况下,同一数据库中存在不同应用程序的不同表。如果条令只是因为对它们一无所知而删除它们,那

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

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

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

您不能这样做,因为Doctrine2只关心它所知道的表——也就是说由实体表示的表。因为您从应用程序中删除了一些实体,所以条令不再认为该表属于您的应用程序。在某些情况下,同一数据库中存在不同应用程序的不同表。如果条令只是因为对它们一无所知而删除它们,那是没有意义的。这将是种族歧视。。。但在桌子上

如果您只想以编程方式删除表,可以使用原始查询。据我所知,条令没有任何删除表的方法。或者,您也可以手动执行。

您可以执行原始sql

例如,在Symfony2控制器中:

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

在原则2.6.2中,您可以通过删除实体类来删除表,迁移后:diff您将通过删除表查询获得新文件,迁移:migrate将执行删除所需表的命令。 即将被删除的类与其他实体有关系,所以我必须粗暴地(手动)删除其他实体中提到的所有旧实体类。
刚刚测试。

我不明白这个问题。。。。你想删除什么?还有类实体吗?你实际上可以使用控制台命令删除表:我想你的意思是…tableist