2011-01-25 40 views
5

嘿。 我很难迁移我所做的更改,我的配置/教条/ schema.yml文件。在symfony中更好地使用模型和迁移

我在user表中添加了列age。然后我做了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路径中?据我所知,您将模块放在应用程序中,在那里创建视图和控制器。为什么模型应该在外面。像这样我可以制作没有连接控制器和视图的模型?

感谢。

回答

8

为什么模型被外界

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

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

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

在这里,我如何使用学说迁移(简单的用例):

  1. User模型添加列ageschema.yml
  2. ./symfony doctrine:generate-migrations-diff。迁移课程(-es)已经生成。
  3. ./symfony doctrine:migrateage列成功添加到表中。
  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就是我可以让职能和我的用户“数据类” ?喜欢,做一个功能是女性。如果不是,那种功能在哪里?

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

+1

+1对于编写和解释得很好的答案 – 2011-01-26 05:18:42