Yii2中使用migrations管理數據遷移


  YII2的migrations目錄位於console中, 打開命令行窗口,轉到YII框架目錄.

1.創建一個新的migrations時間戳文件:

  輸入: yii migrate/create init-user-table, 然后輸入yes確認. 這樣在console的migrations目錄下就生成了一個新的時間戳文件: m170514_041000_init_user_table.php

use yii\db\Migration;

class m170514_041000_init_user_table extends Migration
{
    public function up()
    {

    }

    public function down()
    {
        echo "m170514_041000_init_user_table cannot be reverted.\n";

        return false;
    }

    /*
    // Use safeUp/safeDown to run migration code within a transaction
    public function safeUp()
    {
    }

    public function safeDown()
    {
    }
    */
}

2.寫入代碼, 目的是創建一個user表:

 
         
use yii\db\Migration;

class m170514_041000_init_user_table extends Migration

{
const TBL_NAME = '{{%user}}';
public function safeUp() { $tableOptions = null; if ($this->db->driverName === 'mysql') { $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'; } $this->createTable(TBL_NAME, [ 'id' => $this->primaryKey(), 'username' => $this->string()->notNull()->unique(), 'auth_key' => $this->string(32)->notNull(), 'password_hash' => $this->string()->notNull(), 'password_reset_token' => $this->string()->unique(), 'email' => $this->string()->notNull()->unique(), 'status' => $this->smallInteger()->notNull()->defaultValue(10), 'created_at' => $this->integer()->notNull(), 'updated_at' => $this->integer()->notNull(), ], $tableOptions); } public function safeDown() { $this->dropTable(TBL_NAME); } }

3.執行migrate:

  在命令行中輸入: yii migrate 回車, 再輸入yes確認, 這樣在MySQL數據庫中就生成了一個user表;

 

 

yii2版本2.07后,增加了更細致的分類,例如我已經創建了admin表,但少了一個status字段,那可以直接用下面命令便會生成只增加字段的文件

yii migrate/create add_column_to_admin --fields=status:int(10):nontNull

 

<?php
use yii\db\Migration;
class m160501_053640_add_column_to_admin extends Migration
{
public function up()
{
$this->addColumn('admin', 'status', $this->int(10)->nontNull());
}
public function down()
{
$this->dropColumn('admin', 'status');
}
}

根據migrate/create后面的參數總共匹配這幾種樣式:

1、create_junction_表名_and_表名,用來創建聯結表

2、add_xxx_to_表名,用來增加字段(可以用--fields樣式指定一個字段,否則生成空的,需要自己寫,當然也可以改模板添加個注釋示例)

3、drop_xxx_from_表名,用來刪除字段(同上)

4、create_表名,用來創建表

5、drop_表名,用來刪除表

注:可以直接在控制台用yii help migrate來查看更多的用法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM