dastanaron / yii2-migrate-updater
此扩展允许你在执行 ./yii migrate/redo 时保存数据
1.0.0
2018-01-12 08:21 UTC
Requires
- yiisoft/yii2: ~2.0.0
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')
** - 根据传递的参数创建或读取表的转储,分别是create
或read
- **
getInsertString ()
** - 获取组装的insert sql
字符串。用于诊断
注意
读取后,转储将被删除
如果你想查看收集的数组或其他数据,则可以使用类的公共属性 TableData
公共属性
- **
$tablename
** - 表名,在构造函数中获取 - **
$selecteddata
** - 在请求后,将包含数据数组。 - **
$sqlstring
** - 在组装后将获得查询字符串