改变symfony中的数据库(学说)

时间:2010-09-16 23:12:24

标签: php symfony1 doctrine

我是symfony(1.4 + Doctrine)的初学者,但有一点令我害怕。似乎每当想要更改模型时,唯一的方法是更改​​数据库的模式(config/doctrine/schema.yml),然后调用symphony doctrine:build,它会刷新数据库中的所有当前数据

在我看来,这似乎不是一种理智的方式。如果一年后我的应用程序投入生产,我决定我的用户需要能够将他们的Facebook页面添加到个人资料中怎么办?在其他框架中(我习惯于CakePHP),只需在users表中添加字段并修改模型文件和配置文件视图即可。在symfony ......好吧,我不知道,这就是我在这里问的原因。我确定我错过了一些东西,因为symfony设计师肯定已经考虑过在发布后可能想要重构应用程序的想法。这样做的正确方法是什么?

3 个答案:

答案 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

部署该代码时,您需要使用您要添加/更改的任何字段手动更新数据库。