在symfony中更好地使用模型和迁移

时间:2011-01-25 23:55:20

标签: php symfony1 doctrine

嘿。 我很难在我的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路径中?据我所知,您将模块保存在应用程序中,您可以在其中创建视图和控制器。为什么模型应该在外面。像这样我可以制作没有连接控制器和视图的模型吗?

感谢。

1 个答案:

答案 0 :(得分:8)

  

为什么模型应该在外面

因为模型可以在项目的任何地方使用,例如,在不同的应用程序和模块中使用。

  

我可以直接进入phpmyadmin,在那里添加数据库中的更改,只需执行php symfony doctrine:build-schema,就像跳过迁移部分(两个命令)一样。

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

这里我如何使用doctrine迁移(简单用例):

  1. 在[{1}}
  2. 中的age模型中添加User
  3. schema.yml。已生成迁移类(-es)。
  4. ./symfony doctrine:generate-migrations-diff。列./symfony doctrine:migrate已成功添加到表格中。
  5. age。构建表单/过滤器/模型
  6. 就是这样。主要思想是./symfony doctrine:build --all-classes类:

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

      此外,当使用模型时,我是否正确/lib/model/doctrine/User.class.php是我可以为我的用户“数据类”创建函数的地方?就像,制作一个功能是女性。如果没有,这种功能会在哪里?

      是的,您可以将此类方法添加到schema.yml模型中,因为它与用户有关。