【问题标题】: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;');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多