Deleting table using Doctrine2 and Symfony2

2019-02-14 03:17发布

How can I delete table using Doctrine2 and Symfony2? I've generated entities and updated schema, now I want to delete this structure.

4条回答
时光不老,我们不散
2楼-- · 2019-02-14 03:22

Not sure if I understood your question correctly. You deleted an entity and want to delete also its generated table from database? If so:

You can't do it, because Doctrine2 only cares about tables it knows - that means the ones that are represented by Entities. Since you deleted some Entity from your application, Doctrine no longer thinks the table belongs to your application. There are situations when there are different tables of different applications in the same database. It wouldn't make sense if Doctrine deleted them just because it doesn't know anything about them. It would be racist... but against tables.

If you just want to drop tables programmatically, you can use raw query. As far as I know, Doctrine doesn't have any method for dropping tables. Or as an alternative, you can do it by hand.

查看更多
\"骚年 ilove
3楼-- · 2019-02-14 03:33

You can do a raw sql.

For example in a Symfony2 controller:

$em = $this->getDoctrine()->getManager();
$sql = 'DROP TABLE hereYourTableName;';
$connection = $em->getConnection();
$stmt = $connection->prepare($sql);
$stmt->execute();
$stmt->closeCursor();
查看更多
甜甜的少女心
4楼-- · 2019-02-14 03:37

Just delete the tables which you are no longer using manually...Doctrine totally ignores unmapped tables.

查看更多
Melony?
5楼-- · 2019-02-14 03:39

In Doctrine 2.6.2 you can DROP table by deleting entity class, after migrations:diff you will get new file with DROP TABLE query, migrations:migrate will execute the command dropping desired table. Class that was about to get deleted had relationships with other entities, so I had to brutally (manually) delete all mentions of old entity class in other entities. Just tested.

查看更多
登录 后发表回答