3

据我所知,夹具是“用于持续测试某些项目、设备或软件的东西”。它应该只在开发和测试环境中使用。

我的背景: 我有一个网络应用程序,它建议销售 5 种特定产品。没有后台可以编辑/删除/添加产品,但是有后台可以修改产品价格和描述,这就是为什么我需要数据库中的 5 个产品。要初始化应用程序,我想将我的 5 个产品插入数据库(通过代码)。

我可以使用夹具在我的数据库中插入产品,但我认为这不是夹具的工作,它只能在“开发”或“测试”环境中使用。

"doctrine:schema:update" 似乎也不是正确的解决方案,因为它只更新模式(我的数据库的结构),而不是关于数据。

有没有办法使用 Symfony3 在我的数据库中插入“静态数据”?数据迁移系统 ? 有正确的方法吗?使用学说迁移捆绑包?

4

2 回答 2

2

好吧,您必须在夹具上放一些,因为您仍然需要在开发/测试环境中使用这些数据。

对于初始化,您必须将其放在第一个迁移脚本中(据我了解,您的应用程序需要它才能工作)

或者您放弃编写在项目生命周期中执行一次的 sql 脚本的想法,并initial-prod-data.dump.sql在 prod 中初始化项目时创建一个而不是导入的脚本。

PS:如果你使用迁移,不要使用实体,使用纯 sql 以避免任何涉及模型演化的回归。

于 2018-05-25T11:49:41.083 回答
1

Fixtures 是插入静态数据进行测试的方式。但是是的,它应该在 dev env 中使用,因为它在插入之前完全截断了 db 中的所有数据。迁移用于模式版本控制。所以它不是使用它的正确地方。因此,如果您对它没问题,请坚持使用固定装置。

于 2017-05-25T08:23:37.537 回答