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

Joh*_*nes 5 php doctrine symfony1

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

谢谢.

Dar*_*yev 8

为什么模型应该在外面

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

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

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

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

  1. age在我的User模型中添加一列schema.yml
  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是我可以为我的用户"数据类"创建函数的地方?就像,制作一个功能是女性.如果没有,这种功能在哪里?

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