我尝试使用symfony各自的教义DataFixture功能生成数据库数据。
如果我这样做多次加载数据:
php bin/console doctrine:fixtures:load
它确实清空我的数据库并重新生成数据。但是,它不会使自动递增值变回原值。 如果我使用选项--purge-with-truncate来运行此命令,它将执行此操作,但是我会抱怨我的外键约束:
$ php bin/console doctrine:fixtures:load --env=test -n --purge-with-truncate
> purging database
In AbstractMySQLDriver.php line 68:
An exception occurred while executing 'TRUNCATE property':
SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constraint (`my_db_name`.`user_property`, CONSTRAINT `fk_property_name` FOREIGN KEY (`propert
y_name`) REFERENCES `my_db_name`.`property` (`name`))
所以是的,当我在三个不同的类中创建固定装置时,我当然添加了依赖项。实体UserProperty取决于用户和属性。
因此,我通过在UserPropertyFixtures类中添加以下方法来实现DependentFixtureInterface:
public function getDependencies()
{
return [
UserFixtures::class,
PropertyFixtures::class,
];
}
我丢失了什么东西还是永远无法工作?
还有其他选项可以重置自动增量值吗?
答案 0 :(得分:0)
据我所知,这还没有解决方案。 我找到了一种解决方案,该解决方案不使用特定ID作为测试值。 DataFixtures使您可以创建“命名”值,您可以在其他Fixture中引用这些值。
但是,如果要截断表并使用外键,则必须按正确的顺序手动执行DROP和CREATE。 不好。...
如果有人仍然有解决方案,我仍然会感兴趣。