zoukankan      html  css  js  c++  java
  • Yii2中使用migrations管理数据迁移

      YII2的migrations目录位于console中, 打开命令行窗口,转到YII框架目录.

    1.创建一个新的migrations时间戳文件:

      输入: yii migrate/create init-user-table, 然后输入yes确认. 这样在console的migrations目录下就生成了一个新的时间戳文件: m170514_041000_init_user_table.php

    use yiidbMigration;
    
    class m170514_041000_init_user_table extends Migration
    {
        public function up()
        {
    
        }
    
        public function down()
        {
            echo "m170514_041000_init_user_table cannot be reverted.
    ";
    
            return false;
        }
    
        /*
        // Use safeUp/safeDown to run migration code within a transaction
        public function safeUp()
        {
        }
    
        public function safeDown()
        {
        }
        */
    }

    2.写入代码, 目的是创建一个user表:

    
    
    use yiidbMigration;
    
    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 yiidbMigration;
    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来查看更多的用法

  • 相关阅读:
    RESTful
    Node.js Express 框架
    Node.js Web 模块
    Node.js Path 模块
    JavaFX输入并显示字符串
    JavaFX手眼协调小游戏(赋源代码)
    JavaFX作业七参考
    管理运筹学(Additional Simplex Algorithm)
    JavaFX15.4 ( 创建一个簡单的计算器 ) 编写一个程序完成加法、减法、乘法和除法操作
    JavaFX移动小球
  • 原文地址:https://www.cnblogs.com/zrcx/p/6852209.html
Copyright © 2011-2022 走看看