fornit1917 / yii2-emigrate
Yii2 框架扩展,用于在创建某些迁移时简化代码生成。
Requires
- php: >=5.4.0
- lib-pcre: *
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-table 和 drop-table 命令)
- column - 迁移中的列名(用于 add-column 和 drop-column 命令)
- columnType - 迁移中的列类型(用于 add-column 和 drop-column 命令)
使用这些选项,可以生成不遵守命名约定的迁移。例如
./yii emigrate/create my_cool_migration --command=add-column --column=column_name --columnType=int