insolita / yii2-migration-generator
一套gii工具,用于根据表架构、phpdoc或表数据生成迁移文件
3.2
2019-07-26 10:58 UTC
Requires
- yiisoft/yii2: >=2.0.14
Requires (Dev)
Suggests
- nesbot/carbon: for testing
- vlucas/phpdotenv: for testing
README
- 生成包含索引和外键的迁移文件(不是导出文件!)用于一个表,用逗号分隔的表列表,根据表名的一部分,对所有表
- 根据表数据生成迁移,有两种方式 - 作为批量插入查询或作为通过模型的插入
- 根据PHPDOC和模型属性生成迁移
变更日志
安装
注意:对于yii <=2.0.13,请使用2.x版本。
安装此扩展的首选方式是通过composer。
运行
composer require --dev --prefer-dist insolita/yii2-migration-generator:~3.1
或将以下内容添加到您的composer.json
文件的require-dev部分。
"insolita/yii2-migration-generator": "~3.1"
仅安装,转到gii并使用(默认为composer自举钩子)
注解语法
通常,列定义的语法基于yii-migration的风格,仅用“|”分隔,并提供一些减少代码的机会
- 如示例所示 - 空括号不是必需的
- 此外,快捷方式expr()将被替换为defaultExpression(),而default()将被替换为defaultValue
您可以在您的模型中添加注解(不一定是AR或yii\base\Model或Object或stdClass)
@db (db2)
- 指定迁移所需的连接id 'db' - 默认值
@table ({{%my_table}})
- 指定迁移的表
支持的列注解
- 作为类上方或当前变量上方的独立注解
/** * @column (name) string|notNull|default('SomeValue') */
- 作为@property或@var定义的附加内容
/**
* @var int $id @column pk()
*/
public $id;
/**
* @var string $route @column string(100)|notNull()
*/
public $route;
/**
* @property integer $id @column pk|comment("Id")
* @property string $username @column string(100)|unique|notNull|default("Vasya")
* @property string $email @column string(200)|unique()|defaultValue("123@mail.ru")
* @property string $password @column string(200)|notNull|expr(null)
* @property string $created_at @column string(200)|notNull|expr('CURRENT_TIMESTAMP')
*/
class TestModel extends ActiveRecord{
自定义
使用自己的模板
从文件夹复制默认模板
vendor/insolita/yii2-migration-generator/gii/default_structure //schema migrations
vendor/insolita/yii2-migration-generator/gii/default_data //data migrations
到某个项目目录,例如
@backend/gii/templates/migrator_data;
@backend/gii/templates/migrator_schema;
更改gii配置如下
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1', 'localhost', '::1'], 'generators' => [ 'migrik' => [ 'class' => \insolita\migrik\gii\StructureGenerator::class, 'templates' => [ 'custom' => '@backend/gii/templates/migrator_schema', ], ], 'migrikdata' => [ 'class' => \insolita\migrik\gii\DataGenerator::class, 'templates' => [ 'custom' => '@backend/gii/templates/migrator_data', ], ], ], ];
使用自定义解析器定义列
- 创建一个继承自\insolita\migrik\resolver*ColumnResolver的新类
- 重写所需方法,或根据数据库类型创建针对特定列的独有方法 - 请参阅insolita\migrik\resolver\BaseColumnResolver的resolveColumn() phpdoc和实现
使用自定义解析器定义索引或关系
- 创建一个继承自\insolita\migrik\resolver\TableResolver的新类
- 在应用引导时添加注入
\Yii::$container->set(IMigrationTableResolver::class, YourTableResolver::class);