dastanaron / yii2-migrate-updater

此扩展允许你在执行 ./yii migrate/redo 时保存数据

1.0.0 2018-01-12 08:21 UTC

This package is not auto-updated.

Last update: 2024-09-18 04:52:13 UTC


README

俄语 在这里

此扩展允许你在执行 ./yii migrate/redo 时不会丢失数据

我们都知道 Yii2 没有表更新系统。有重做功能,它会删除表并按照指定规则重新创建。这很好,但有时,你需要在更新系统(包括表)的同时不丢失数据。

这个解决方案可以实现这一点,但前提是表中出现的新字段将具有 null 的解析。此外,新表不应删除旧列。

然后我们可能会修复它,但在初始阶段它将会是这样的。

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist dastanaron/yii2-migrate-updater "*"

或者在你的 composer.json 文件的 require 部分添加:

"dastanaron/yii2-migrate-updater": "*"

然后运行:

php composer.phar update

使用方法

使用方法相当简单,你必须安装此解决方案,并在你的迁移类中连接该类。

要保存迁移,你需要连接迁移扩展类,并使用它来创建自己的迁移。此外,你必须声明一个包含表名的公共变量 public $tableName

<?php

use dastanaron\yiimigrate\updater\ExtMigration;

class m171226_130601_youmigrationclass extends ExtMigration {
    
    public $tableName = 'youmigrationtable';
    
    //body class
    
}

默认情况下,该类使用一个标志来允许或拒绝存储数据,它在父类中指定为 public $saveData = true; 如果你不需要尝试保存数据,请将其属性在它的类中重新分配以禁用此功能

<?php

use dastanaron\yiimigrate\updater\ExtMigration;

class m171226_130601_youmigrationclass extends ExtMigration {
    
    public $tableName = 'youmigrationtable';
    
    public $saveData = false; //disable data saving
    
    //body class
    
}

此功能是通过辅助类 TableData 实现的。下面,你可以看到你可以在外部迁移扩展和诊断中使用的方法和属性。

TableData 类的方法

  • ** getData () ** - 使用 yii\db\Query 向数据库请求数据
  • ** dump ($type = 'create') ** - 根据传递的参数创建或读取表的转储,分别是 createread
  • ** getInsertString () ** - 获取组装的 insert sql 字符串。用于诊断

注意

读取后,转储将被删除

如果你想查看收集的数组或其他数据,则可以使用类的公共属性 TableData

公共属性

  • ** $tablename ** - 表名,在构造函数中获取
  • ** $selecteddata ** - 在请求后,将包含数据数组。
  • ** $sqlstring ** - 在组装后将获得查询字符串