【问题标题】:Reset (clear) a table in Doctrine ORM 2.5 and Symfony 3.4重置(清除)Doctrine ORM 2.5 和 Symfony 3.4 中的表
【发布时间】:2018-10-25 14:58:03
【问题描述】:
使用 Smyfony 3.4 和 Doctrine ORM 2.5 (mySql) 我正在寻找一种“重置”表的方法。
重置我的意思是我想删除该表的所有条目并重置 id 列的自动增量。基本上我想在第一次创建表时获得初始状态。
这应该在从更新源重新填充表时使用。
可能有一种方法可以使用查询生成器执行此操作,但我还想不通。
【问题讨论】:
标签:
symfony
doctrine-orm
doctrine
doctrine-query
symfony3.x
【解决方案1】:
你可以试试这样的:
$cmd = $em->getClassMetadata($className);
$connection = $em->getConnection();
$dbPlatform = $connection->getDatabasePlatform();
$connection->beginTransaction();
try {
$connection->query('SET FOREIGN_KEY_CHECKS=0');
$q = $dbPlatform->getTruncateTableSql($cmd->getTableName());
$connection->executeUpdate($q);
$connection->query('SET FOREIGN_KEY_CHECKS=1');
$connection->commit();
}
catch (\Exception $e) {
$connection->rollback();
}
如果您想重置自动增量,只需执行以下操作:
$con->exec('ALTER TABLE ' . $cmd->getTableName() . ' AUTO_INCREMENT = 1;');