crudschool/yii2-migration-generator

一套gii工具,用于通过表结构、PHPDOC或表数据生成迁移文件

安装: 23

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 0

开放问题: 0

类型:yii2-extension

1.1.11 2018-08-26 09:59 UTC

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);