【问题标题】:Altering a database in symfony (doctrine)在 symfony 中修改数据库(学说)
【发布时间】:2010-09-16 23:12:23
【问题描述】:

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

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

【问题讨论】:

    标签: php symfony1 doctrine


    【解决方案1】:

    您需要查看迁移框架。这基本上由创建描述模式更改的类组成。您可以在此处查看 symfony 1.2 教程:http://www.symfony-project.org/doctrine/1_2/en/07-Migrations,其中大部分内容也适用于 1.4。

    【讨论】:

    • 谢谢。它似乎比需要的复杂,特别是对于简单的修改,但我认为它会做。
    • 另一种选择是手动更改数据库并更改架构,但使用不同的选项运行教义:构建。如果你执行“./symfony dictionary:build --all-classes”,这将更新模型、表单和过滤器类,但不会触及数据库。这不是最好的方法,但会在紧要关头起作用。
    • 非常感谢:我想这两个选项都有用。可以手动进行快速更改,并在 Migrations 的帮助下进行更复杂的操作。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-07-30
        • 2011-04-20
        • 1970-01-01
        • 2016-11-09
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多