使用Smyfony 3.4和Doctrine ORM 2.5(mySql),我正在寻找一种“重置”表的方法。
通过重置,我的意思是我想删除该表的所有条目并重置id列的自动增量。基本上,我想在首次创建表时获得初始状态。
从更新源重新填充表格时应使用此方法。
可能有一种使用查询生成器来执行此操作的方法,但我还不能弄清楚。
答案 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;');