foreign-keys - Symfony4:具有外键和截断/重置自动增量值的 DataFixtures
问题描述
我尝试使用 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,
];
}
我错过了什么还是它从来没有工作过?
是否有其他选项可以重置自动增量值?
解决方案
据我所知,没有解决方案。我找到了一个不为测试值引用某个 id 的解决方案。DataFixtures 使您可以创建“命名”值,您可以在其他夹具中引用这些值。
但是,如果要截断表并使用外键,则必须以正确的顺序手动执行 DROP 和 CREATE。不太好....
如果有人仍然有解决方案,我仍然会感兴趣。
推荐阅读
- javascript - 带对话框的 Javascript 构造函数
- php - 使用php降序
- scala - 查找不同行中两个时间戳之间的持续时间
- nginx - 带有别名的 nginx try_files 不起作用,但 rewrite 可以
- react-native - 是否可以导入我的照片以响应本机应用程序并将它们分享到 instagram
- python - 如何通过切片在字典python中分别获取键和值
- python - 我们将如何使用输入语句的输出,将使用什么来代替命令中的 (is) 和命令中的生日运行
- python - 如何在python中解析具有相同类名的网站的多个属性?
- reactjs - 如何在 Mui 数据表中进行自定义重置行为
- java - Spring boot 控制器调用不支持内容类型“application/json;charset=UTF-8”