【问题标题】:Better use of models and migration in symfony在 symfony 中更好地使用模型和迁移
【发布时间】:2011-01-25 23:55:20
【问题描述】:

嘿。 我很难迁移我在 config/doctrine/schema.yml 文件中所做的更改。

我将 age 列添加到 user 表中。然后我做了一个 php symfony doctrine:generate-migrations-diff ,然后是 php symfony doctrine:migrate

查看我的数据库,现在添加了 age 列,但没有删除任何数据。

但是,我的 /lib/model/doctrine/base/BaseUser.class.php 没有改变,没有 age 字段或 age 的函数。所以我也执行了命令 php symfony doctrine:build-model 。最后模型也被更新/迁移。

所以我想知道,这是唯一的方法吗?好像工作量很大,每次做都怕错过什么。

我可以直接进入 phpmyadmin,在数据库中添加更改,然后执行 php symfony doctrine:build-schema ,然后跳过迁移部分(两个命令)。

在使用模型时,我是否可以在 /lib/model/doctrine/User.class.php 中为我的用户“数据类”创建函数等?比如,创建一个函数 isFemale 。如果不是,那么这种功能在哪里?

这可能是一个不好的问题,但为什么模型层在 /lib/doctrine 路径中?据我所知,您将模块保存在应用程序中,您可以在其中创建视图和控制器。为什么模型应该在外面。像这样我可以在没有附加控制器和视图的情况下制作模型吗?

谢谢。

【问题讨论】:

    标签: php symfony1 doctrine


    【解决方案1】:

    为什么模型应该在外面

    因为模型可以在您的项目中随处使用,例如,在不同的应用程序和模块中。

    我可以直接进入 phpmyadmin,在数据库中添加更改,然后执行一个 php symfony 学说:build-schema ,然后跳过迁移部分(两个命令)。

    当然可以,但迁移是在部署到生产或团队工作时跟踪架构的好方法。

    我如何使用原则迁移(简单用例):

    1. schema.yml 中的User 模型中添加age
    2. ./symfony doctrine:generate-migrations-diff。迁移类 (-es) 已生成。
    3. ./symfony doctrine:migrate。列 age 已成功添加到表中。
    4. ./symfony doctrine:build --all-classes。构建表单/过滤器/模型

    就是这样。主要思想是doctrine:generate-migrations-diff类:

    1. 收集有关所有模型结构的信息(schema.yml 的 php 表示)
    2. 比较您的 schema.yml 和来自 (1) 的信息
    3. 根据差异生成迁移类

    在使用模型时,我是否可以在 /lib/model/doctrine/User.class.php 中为我的用户“数据类”创建函数等?就像,制作一个函数 isFemale 。如果没有,这种功能在哪里?

    是的,您可以将这样的方法添加到User 模型中,因为它是关于用户的。

    【讨论】:

    • 现在我遇到了一个错误,无法从差异中生成迁移类。除此之外没有其他错误:(
    • Johannes,这意味着模式和模型是同步的。记住在创建迁移之前不要构建模型。
    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2018-08-01
    • 2020-11-09
    • 1970-01-01
    • 2016-10-28
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多