Yii2 Migration 使用

1.创建一个数据库迁移: 

yii migrate/create

这是一个通用的创建数据迁移格式,其中是必填的参数,用来描述当前迁移。

ps:这个只能字母、数字、下划线,因为这个指令会生成一个迁移类,会不是这个类的类名的一部分。

举例说明,执行以下指令:

./yii migrate/create ArticleInit

如果想配置migration 在 console/config/main.php  中controllerMap添加配置

'migrate' => [

    'class' => yxx\db\controllers\MigrateController::class,

    'migrationNamespaces' => [

        'console\migrations',

        'yxx\user\migrations',

    ],

],

执行完后在create后默认会在console/migrations目录下生成一个控制器


up方法

public function safeUp()

{

    if ($this->db->driverName === 'mysql') {

        $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';

    }

    $this->createTable('{{%article}}', [

        'id' => $this->pk()->comment('文章ID'),

        'userId' => $this->integer()->notNull()->comment('用户ID'),

        'title' => $this->string(60)->notNull()->comment('标题'),

        'selfTypeId' => $this->integer()->notNull()->comment('自定义分类ID'),

        'sysTypeId' => $this->integer()->notNull()->comment('系统分类ID'),

        'isTuijian' => $this->tinyInteger()->notNull()->comment('是否推荐'),

        'isComment' => $this->tinyInteger()->notNull()->comment('是否可评论'),

        'isPrivate' => $this->tinyInteger()->notNull()->comment('是否仅自己可见'),

        'publishTime' => $this->timestamp()->notNull()->comment('发布时间'),

        'tags' => $this->string(60)->notNull()->comment('标签,最多5个,英文逗号分隔'),

        'summary' => $this->string(200)->notNull()->comment('摘要'),

        'thumbUrl' => $this->string(120)->notNull()->comment('缩略图地址'),

        'createTime' => $this->createTime()->comment('创建时间'),

        'updateTime' => $this->updateTime()->comment('更新时间')

    ], $tableOptions);

}

down方法一般为回撤

public function safeDown()

{

    echo "M190116032929ArticleInit cannot be reverted.\n";

    return false;

}

如下是所有这些数据库访问方法的列表:

yii\db\Migration::execute(): 执行一条 SQL 语句

yii\db\Migration::insert(): 插入单行数据

yii\db\Migration::batchInsert(): 插入多行数据

yii\db\Migration::update(): 更新数据

yii\db\Migration::delete(): 删除数据

yii\db\Migration::createTable(): 创建表

yii\db\Migration::renameTable(): 重命名表名

yii\db\Migration::dropTable(): 删除一张表

yii\db\Migration::truncateTable(): 清空表中的所有数据

yii\db\Migration::addColumn(): 加一个字段

yii\db\Migration::renameColumn(): 重命名字段名称

yii\db\Migration::dropColumn(): 删除一个字段

yii\db\Migration::alterColumn(): 修改字段

yii\db\Migration::addPrimaryKey(): 添加一个主键

yii\db\Migration::dropPrimaryKey(): 删除一个主键

yii\db\Migration::addForeignKey(): 添加一个外键

yii\db\Migration::dropForeignKey(): 删除一个外键

yii\db\Migration::createIndex(): 创建一个索引

yii\db\Migration::dropIndex(): 删除一个索引

2.提交迁移:

可以执行如下: 

./yii migrate 

这个指令会提交所有的迁移 

或者这样,指定类名,提交一个迁移 

./yii migrate M190116032929ArticleInit 

删除某字段:

public function down() {$this->dropColumn('{{app_base}}', 'manager_id');}

删除某张表:

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

3.撤销

./yii migrate/down 执行某些撤销对表的操作 ./yii migratre/to (迁移文件名)执行某个指定的迁移文件 在创建数据表的过程中可以同时声称多张表,删除多张表 执行过的迁移文件,会在数据库的migration 中生成一条记录,记录此迁移文件已经执行过,下次将执行数据表中不存在的迁移文件 注意: ./yii migrate/down 此命令执行不只删除了对数据库的操作同时也会删除migration数据表中的执行记录

你可能感兴趣的:(Yii2 Migration 使用)