我认为我对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”模式可能更安全,尤其是在生产环境中。如果没有此模式,将清除数据库,并且可能会丢失生产数据。