Symfony 条令-如何初始化DB值
我在Symfony 5.0应用程序中使用原则2.7.0。 我使用ORM注释在实体中定义DB表。 我用Symfony maker创建了一个迁移,如下所示Symfony 条令-如何初始化DB值,symfony,doctrine-orm,doctrine,database-migration,symfony5,Symfony,Doctrine Orm,Doctrine,Database Migration,Symfony5,我在Symfony 5.0应用程序中使用原则2.7.0。 我使用ORM注释在实体中定义DB表。 我用Symfony maker创建了一个迁移,如下所示 php bin/console make:migration 然后,我使用 php bin/console doctrine:migrations:migrate 这将产生一个很好的新DB 现在,我想知道是否可以为带有注释的表定义基础数据。 我的意思不是为属性设置默认值,而是向DB始终需要的表中添加条目 所以基本上我也希望迁移将条目插入数据库
php bin/console make:migration
然后,我使用
php bin/console doctrine:migrations:migrate
这将产生一个很好的新DB
现在,我想知道是否可以为带有注释的表定义基础数据。
我的意思不是为属性设置默认值,而是向DB始终需要的表中添加条目
所以基本上我也希望迁移将条目插入数据库。
这可能吗?应用程序像查找表一样运行所需的数据实际上应该是迁移的一部分。您还应该为该数据提供适当的回滚过程,以保持迁移向后兼容 但是,您应该避免在这些迁移中使用条令,因为稍后对实体映射等的更改将破坏以前的所有迁移
从技术上讲,您可以使用fixture来加载此数据。虽然默认情况下,除非指定了标志,否则fixture会截断整个数据库,使其不适合这种操作,因为不可能使用此选项删除数据集。我不这样认为,您可以定义默认值和其他db内容,但一些基本数据不能。您可以使用夹具插入虚拟数据是的,但夹具不用于测试吗?就像你说的,这是虚拟数据。不知道这是否也可以(或应该)用于基础数据的创建……这个捆绑包不应该包含在产品环境中,但为什么不包括数据。您可以定义正确的数据而不是虚拟数据。您知道如何告诉FixturesBundle使用my DEV DB设置而不是测试设置吗?我有“.env”和“.env.test”-Fixtures使用后者,但应该使用“.env”设置…当您注册捆绑包时,您应该定义环境您可以推荐任何适合Symfony原则注释声明和后续迁移的工作流/工具/工具链,包括数据(如查找表)?由于迁移需要独立于您的代码,恐怕没有太多的库可以帮助您生成数据集。为了确保兼容性,迁移是相当静态的。但是,对于MySQL,您可以使用DBMS,例如MySQL工作台,至少为您生成语句。谢谢。我配置了fixtures包来完成这项工作。我知道固定装置总是更新整个数据库。在我的场景中,这没关系。所以我接受你的回答。