【问题标题】:Migrations + model changes in YiiYii 中的迁移 + 模型更改
【发布时间】:2016-10-28 18:40:31
【问题描述】:

我想了解一些有关 Yii 推荐工作流程的详细信息。想象一下,您已经有一些数据库和一些模型。有一天,您需要向模型中添加一个新字段。在 Django 中,您只需修改 models.py 文件,然后运行 ​​manage.py makemigrations && manage.py migrate - 它会分析更改,创建迁移文件并将更改应用到数据库。但是我应该在 Yii 中做什么呢?

我从文档和手册中只看到以下方式:

  1. 创建空迁移
  2. 尝试在 Yii-migration 语法中编写必要的更改(更改列和添加外键可能不太明显,比编写 SQL 查询更困难)。
  3. 运行yiic migrate
  4. 使用 Gii 为新的数据库结构生成模型代码,并将新字段复制粘贴到现有模型文件中。

在我看来,除了修改模型之外,创建迁移会导致很多无用的工作。因此,我不得不在 Yii 中使用奇怪的迁移语法,然后手动修改模型,而不是像在 Django 中那样只修改模型。它真的是它应该工作的方式吗?难道不能以某种方式简化它吗?

【问题讨论】:

    标签: php yii yii2 migration database-migration


    【解决方案1】:

    我正在使用以下方法 5-6 个月,它的工作完美:

    1. 在模型文件夹中创建新文件夹并将其命名为实体。
    2. 使用 gii 和
    3. 生成您需要的所有模型

    generate all models you need using gii

    a) 在模型路径字段中使用新文件夹,“实体”而不是模型文件夹

    b) 在模型类字段中,添加“实体”作为模型名称后缀

    1. 现在在模型文件夹中,创建新的 PHP 类并将其命名为例如“Gift”并从“GiftEntity”扩展它
    2. 在预加载导入的类中添加新文件夹“实体”。

    现在,当您在 db 中进行新的迁移和更改模型时,使用 gii 重新生成您的实体模型“GiftEntity”,并且您在扩展模型“Gift”中的所有代码都不会受到影响。

    【讨论】:

    • 很可能,我需要在模型中添加一些使用新字段(如果我添加新字段)的方法,因此它不会“原封不动”。但是,感谢您的想法,其中有一些意义。
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2016-07-18
    • 2018-04-26
    • 2014-07-01
    • 2018-04-20
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多