我认为我对Symfony以及bundle的工作原理有很好的了解。

但是,我从未发现如何解决一个简单的问题:制作一个可重用的捆绑包,提供预先填充(例如)世界上所有国家/地区名称,意大利所有省份,英格兰和英国的税率历史记录等表格/文档实体的数据以此类推。

当然,目的是提供依赖于此数据源的表单,服务和控制器,而无需跨项目复制和粘贴表和实体。

你会怎么做?

不能选择数据固定模块IMHO,原因很明显:您将在数据库运行时清除数据库。

从静态数据源(json,YAML)读取并执行插入/更新的自定义命令?

最佳答案

第一步是在捆绑包中声明一个Doctrine实体。我认为您应该创建DataFixtures来将数据填充到db中。

您也许应该考虑使用种子而不是夹具。

夹具是伪数据,用于测试您的应用程序

种子是应用程序正常工作所需的最少数据。

从技术上讲,这些完全相同,您可以在“ DataFixtures /”文件夹下声明它,然后使用“ doctrine:fixtures:load”命令将其导入。

您可以在“ DataFixtures”文件夹下创建一个文件夹“ Fixtures /”和一个文件夹“ Seeds /”,然后使用以下命令加载您的种子

php app/console doctrine:fixtures:load --fixtures=/path/to/seeds/folder --append


注释中建议,创建自定义Symfony2命令强制使用“ --append”模式可能更安全,尤其是在生产环境中。如果没有此模式,将清除数据库,并且可能会丢失生产数据。

09-25 18:23
查看更多