重置(清除)Doctrine ORM 2.5和Symfony 3.4中的表

时间:2018-10-25 14:58:03

标签: symfony doctrine-orm doctrine doctrine-query symfony3.x

使用Smyfony 3.4和Doctrine ORM 2.5(mySql),我正在寻找一种“重置”表的方法。

通过重置,我的意思是我想删除该表的所有条目并重置id列的自动增量。基本上,我想在首次创建表时获得初始状态。

从更新源重新填充表格时应使用此方法。

可能有一种使用查询生成器来执行此操作的方法,但我还不能弄清楚。

1 个答案:

答案 0 :(得分: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;');