fornit1917/yii2-emigrate

Yii2 框架扩展,用于在创建某些迁移时简化代码生成。

安装: 43

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

v0.1.1-alpha 2015-01-06 10:48 UTC

This package is not auto-updated.

Last update: 2024-09-24 15:39:01 UTC


README

Yii2 框架扩展,用于在创建某些迁移时简化代码生成。迁移类中的 up 和 down 方法的代码可以根据迁移名称或额外的命令行参数生成。

安装

通过 composer 安装

composer require "fornit1917/yii2-emigrate:dev-master"

然后,为控制台应用程序在 controllerMap 中添加 ExtendedMigrateController(文件 config/console.php)

    'controllerMap' => [
        'emigrate' => 'fornit1917\yii2emigrate\ExtendedMigrateController'
    ],

现在,您可以使用新的 yii2-emigrate 创建迁移

./yii emigrate/create create_table_table_name

用法

对于自动代码生成的迁移,需要提供特定的名称

  • create_table_table_name - 创建名为 "table_name" 的表
  • drop_table_table_name - 删除名为 "table_name" 的表
  • add_column_column_name_in_table_name - 在 "table_name" 表中添加名为 "column_name" 的新列
  • drop_column_column_name_in_table_name - 在 "table_name" 表中删除名为 "column_name" 的列

创建创建表或删除表的迁移

./yii emigrate/create drop_table_table_name

此命令将生成以下代码

<?php

use yii\db\Schema;
use yii\db\Migration;

class m150105_202502_create_table_table_name extends Migration
{
    public function up()
    {
        $this->createTable('table_name', [], 'ENGINE=InnoDB CHARSET=utf8');
    }

    public function down()
    {
        $this->dropTable('table_name');
    }
}

如果您不需要 "ENGINE=InnoDB CHARSET=utf8" 选项,您可以在命令行选项 tableOptions 中指定其值

./yii emigrate/create **create_table_**table_name --tableOptions="ENGINE=MyISAM"

或空值

./yii emigrate/create **create_table_**table_name --tableOptions=0

删除表的迁移生成方式类似

./yii emigrate/create drop_table_table_name

创建添加列和删除列的迁移

./yii emigrate/create add_column_column_name_in_table_name

此命令将生成以下代码

<?php

use yii\db\Schema;
use yii\db\Migration;

class m150106_102312_add_column_column_name_in_table_name extends Migration
{
    public function up()
    {
        $this->addColumn('table_name', 'column_name', '');
    }

    public function down()
    {
        $this->dropColumn('table_name', 'column_name');
    }
}

列类型为空。此参数可以在命令行选项 columnType 中指定

./yii emigrate/create add_column_column_name_in_table_name --columnType="int(11) not null default 0"

此命令将生成以下代码

<?php

use yii\db\Schema;
use yii\db\Migration;

class m150106_102312_add_column_column_name_in_table_name extends Migration
{
    public function up()
    {
        $this->addColumn('table_name', 'column_name', 'int(11) not null default 0');
    }

    public function down()
    {
        $this->dropColumn('table_name', 'column_name');
    }
}

这是一个完全完成的迁移,无需手动修改!

删除列的迁移生成方式类似

./yii emigrate/create drop_column_column_name_in_table_name --columnType="int(11) not null default 0"

命令行选项

可以使用以下命令行选项

  • command
    • create-table
    • drop-table
    • add-column
    • drop-column
  • table - 迁移中的表名
  • tableOptions - 迁移::createTable 的选项(用于 create-tabledrop-table 命令)
  • column - 迁移中的列名(用于 add-columndrop-column 命令)
  • columnType - 迁移中的列类型(用于 add-columndrop-column 命令)

使用这些选项,可以生成不遵守命名约定的迁移。例如

./yii emigrate/create my_cool_migration --command=add-column --column=column_name --columnType=int