crudschool / yii2-migration-generator
一套gii工具,用于通过表结构、PHPDOC或表数据生成迁移文件
1.1.11
2018-08-26 09:59 UTC
Requires
- yiisoft/yii2: ~2.0.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-29 05:33:25 UTC
README
- 生成迁移文件(不是导出!)包含索引和外部键,对于一张表,用逗号分隔的表列表,按表名的一部分,对所有表通过
- 根据表数据生成迁移,有两种方式——作为批量插入查询或通过模型插入
- 根据PHPDOC和模型属性生成迁移
安装
安装此扩展的首选方式是通过composer。
运行以下命令之一:
php composer.phar require -dev --prefer-dist crudschool/yii2-migration-generator:~1.1
或
composer require -dev --prefer-dist crudschool/yii2-migration-generator:~1.1
或添加
"crudschool/yii2-migration-generator": "~1.1"
到您的composer.json文件的require-dev部分。
安装后,前往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/crudschool/yii2-migration-generator/gii/default_structure //schema migrations vendor/crudschool/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'=>\crudschool\migrik\gii\StructureGenerator::class, 'templates'=> [ 'custom'=>'@backend/gii/templates/migrator_schema' ] ], 'migrikdata'=>[ 'class'=>\crudschool\migrik\gii\DataGenerator::class, 'templates'=> [ 'custom'=>'@backend/gii/templates/migrator_data' ] ], ] ]
使用自己的定义列的解析器
- 创建一个新的类,继承自\crudschool\migrik\resolver*ColumnResolver
- 重写所需的方法,或创建基于数据库类型的独家列的方法——请参阅crudschool\migrik\resolver\BaseColumnResolver resolveColumn() phpdoc和实现
使用自己的定义索引或关系的解析器
- 创建一个新的类,继承自\crudschool\migrik\resolver\TableResolver
- 在应用引导时添加注入
\Yii::$container->set(IMigrationTableResolver::class, YourTableResolver::class);