我是symfony(1.4 + Doctrine)的初学者,但有一点令我害怕。似乎每当想要更改模型时,唯一的方法是更改数据库的模式(config/doctrine/schema.yml
),然后调用symphony doctrine:build
,,它会刷新数据库中的所有当前数据
在我看来,这似乎不是一种理智的方式。如果一年后我的应用程序投入生产,我决定我的用户需要能够将他们的Facebook页面添加到个人资料中怎么办?在其他框架中(我习惯于CakePHP),只需在users
表中添加字段并修改模型文件和配置文件视图即可。在symfony ......好吧,我不知道,这就是我在这里问的原因。我确定我错过了一些东西,因为symfony设计师肯定已经考虑过在发布后可能想要重构应用程序的想法。这样做的正确方法是什么?
答案 0 :(得分:2)
您需要查看迁移框架。这基本上由创建描述模式更改的类组成。你可以在这里看到一个symfony 1.2教程:http://www.symfony-project.org/doctrine/1_2/en/07-Migrations,其中大部分也适用于1.4。
答案 1 :(得分:0)
当我的数据库中有数据时,我从不使用build-all。我只是对模型和build-sql使用build-classes,然后我手动更改数据库,添加或更改字段。
答案 2 :(得分:0)
迁移是正确的方法。但是,如果您因某些原因不想使用迁移,另一个选择是更新schema.yml,然后重建模型等,如下所示:
symfony doctrine:build-model
symfony doctrine:build-forms
symfony doctrine:build-filters
symfony doctrine:build-sql
部署该代码时,您需要使用您要添加/更改的任何字段手动更新数据库。