Php 更改symfony中的数据库(条令)

Php 更改symfony中的数据库(条令),php,symfony1,doctrine,Php,Symfony1,Doctrine,我是symfony(1.4+学说)的初学者,但有一点让我害怕。似乎无论何时想要更改模型,唯一的方法就是更改数据库的模式(config/doctor/schema.yml),然后调用symphony-doctor:build,,刷新数据库中的所有当前数据 在我看来,这并不是一个明智的方法。如果我的应用程序投产一年后,我决定我的用户需要能够将他们的facebook页面添加到个人资料中,该怎么办?在其他框架中(我习惯于使用CakePHP),只需在users表中添加一个字段并修改模型文件和概要视图即可。

我是symfony(1.4+学说)的初学者,但有一点让我害怕。似乎无论何时想要更改模型,唯一的方法就是更改数据库的模式(
config/doctor/schema.yml
),然后调用
symphony-doctor:build
,刷新数据库中的所有当前数据


在我看来,这并不是一个明智的方法。如果我的应用程序投产一年后,我决定我的用户需要能够将他们的facebook页面添加到个人资料中,该怎么办?在其他框架中(我习惯于使用CakePHP),只需在
users
表中添加一个字段并修改模型文件和概要视图即可。在symfony。。。嗯,我不知道,这就是为什么我在这里问。我确信我遗漏了一些东西,因为symfony的设计师们肯定已经考虑过这样一个想法,即人们可能希望在发布后重构应用程序。正确的方法是什么?

您需要查看迁移框架。这基本上由创建描述模式更改的类组成。您可以在这里看到symfony 1.2教程:其中大部分内容也适用于1.4。

当数据库中有数据时,我从不使用build all。我只是对模型使用构建类并构建sql,然后手动更改数据库,添加或更改字段。

迁移是正确的方法。但是,如果出于某种原因不想使用迁移,另一种选择是更新schema.yml,然后重建模型,等等。如下所示:

symfony doctrine:build-model
symfony doctrine:build-forms
symfony doctrine:build-filters
symfony doctrine:build-sql

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

谢谢。它似乎比需要的更复杂,特别是对于简单的修改,但我认为它会做到。另一种选择是手动更改数据库并更改模式,但运行原则:使用不同的选项构建。如果执行“/symfony原则:构建——所有类”,将更新模型、表单和筛选类,但不会触及数据库。这不是最好的方法,但在紧要关头会起作用。非常感谢:我想这两种方法都有用。可以手动进行快速更改,并在迁移的帮助下执行更复杂的操作。