Doctrine 2. orm:schema-tool:update。设置开始ID

时间:2012-09-17 08:03:05

标签: php doctrine-orm fixtures

当我使用./bin/doctrine orm:fixtures:load填充带有示例数据的表时,首先迁移设置自动增量表ID,如1,2,3,4,5等...

在第二个orm:fixtures:load迁移命令之后,它会清除所有数据并设置ID,如5,6,7,8,9等等...

当我多次装入灯具时,如何将AI id计数器重置为1?

2 个答案:

答案 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;");