当我使用 ./bin/doctrine orm:fixtures:load
用示例数据填充表时,首先迁移设置自动增量表 ID,如 1,2,3,4,5 等......
在第二个orm:fixtures:load
迁移命令后,它会清除所有数据并设置 id,如 5,6,7,8,9 等......
当我多次加载灯具时,如何将 AI ID 计数器重置为 1?
$ app/console help doctrine:fixtures:load
默认情况下,原则数据固定装置使用 DELETE 语句从中删除现有行 数据库。如果要改用 TRUNCATE 语句,可以使用 --purge-with-truncate 标志:
./app/console doctrine:fixtures:load --purge-with-truncate
截断将重置自动增量。
更新
控制台命令适用于 Symfony,但仅使用 Doctrine 应该相同:
./bin/doctrine orm:fixtures:load --purge-with-truncate
更新 #2 有关引发异常的评论
如果您有外键,则只能通过常规 SQL 重置AUTO_INCREMENT
:
$connection = $this->getEntityManager()->getConnection();
$connection->exec("ALTER TABLE <tablename> AUTO_INCREMENT = 1;");
在 Zend 2 中,我使用了下面提到的代码来截断并重置自动增量值为 1。在存储库中使用此代码。
// To delete all records
$queryBuilder = $this->createQueryBuilder('c');
$queryBuilder->delete();
$queryBuilder->getQuery()->execute();
//Reset table auto increment.
$tableName = $this->getClassMetadata()->getTableName();
$connection = $this->getEntityManager()->getConnection();
$connection->exec("ALTER TABLE " . $tableName . " AUTO_INCREMENT = 1;");