insolita/yii2-migration-generator

一套gii工具,用于根据表架构、phpdoc或表数据生成迁移文件

安装次数: 364,457

依赖: 7

建议者: 0

安全: 0

星标: 106

关注者: 9

分支: 29

开放问题: 2

类型:yii2-extension

3.2 2019-07-26 10:58 UTC

This package is auto-updated.

Last update: 2024-09-18 16:37:02 UTC


README

Latest Stable Version Total Downloads License

  • 生成包含索引和外键的迁移文件(不是导出文件!)用于一个表,用逗号分隔的表列表,根据表名的一部分,对所有表
  • 根据表数据生成迁移,有两种方式 - 作为批量插入查询或作为通过模型的插入
  • 根据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);