当我使用./bin/doctrine orm:fixtures:load
填充带有示例数据的表时,首先迁移设置自动增量表ID,如1,2,3,4,5等...
在第二个orm:fixtures:load
迁移命令之后,它会清除所有数据并设置ID,如5,6,7,8,9等等...
当我多次装入灯具时,如何将AI id计数器重置为1?
答案 0 :(得分:20)
$ app/console help doctrine:fixtures:load
默认情况下,Doctrine Data Fixtures使用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;");
答案 1 :(得分: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;");