zoukankan      html  css  js  c++  java
  • yii2 migration使用

    1.通过 yii migrate/create mytable 创建一个类似于 my-yii-advanced-appconsolemigrationsm150427_080248_mytable.php 的文件 内容如下:

    (可以使用yii migrate --migrationPath=@yii/rbac/migrations/导入Yii官方提供的权限控制表)

    <?php
    
    use yiidbSchema;
    use yiidbMigration;
    
    class m150427_080248_mytable extends Migration
    {
        public function up()
        {

          $tableOptions = null;
          if ($this->db->driverName === 'mysql') {
            $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
          }

    
    

          $this->createTable('{{%t_adm_user}}', [
            'id' => Schema::TYPE_PK,
            'username' => Schema::TYPE_STRING . '(64) NOT NULL',
            'password' => Schema::TYPE_STRING . '(64) NOT NULL',
            'userphoto' => Schema::TYPE_STRING . '(64) NOT NULL',
            ], $tableOptions);
          $pw1 = Yii::$app->security->generatePasswordHash('admin');
          $pw2 = Yii::$app->security->generatePasswordHash('demo');
          $sql = "INSERT INTO `t_adm_user` (`id`, `username`, `password`) VALUES
              (1, 'admin', '$pw1'),
              (2, 'demo', '$pw2');";
          $this->execute($sql);

        }
    
        public function down()
        {
            echo "m150427_080248_mytable cannot be reverted.
    ";
    
            return false;
        }
        
        /*
        // Use safeUp/safeDown to run migration code within a transaction
        public function safeUp()
        {
        }
        
        public function safeDown()
        {
        }
        */
    }

    2.可参考安装yii高级应用模版是自带的my-yii-advanced-appconsolemigrationsm130524_201442_init.php文件进行代码的填写

    <?php
    
    use yiidbSchema;
    use yiidbMigration;
    
    class m130524_201442_init extends Migration
    {
        public function up()
        {
            $tableOptions = null;
            if ($this->db->driverName === 'mysql') {
                // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
                $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
            }
    
            $this->createTable('{{%user}}', [
                'id' => Schema::TYPE_PK,
                'username' => Schema::TYPE_STRING . ' NOT NULL',
                'auth_key' => Schema::TYPE_STRING . '(32) NOT NULL',
                'password_hash' => Schema::TYPE_STRING . ' NOT NULL',
                'password_reset_token' => Schema::TYPE_STRING,
                'email' => Schema::TYPE_STRING . ' NOT NULL',
    
                'status' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10',
                'created_at' => Schema::TYPE_INTEGER . ' NOT NULL',
                'updated_at' => Schema::TYPE_INTEGER . ' NOT NULL',
            ], $tableOptions);
        }
    
        public function down()
        {
            $this->dropTable('{{%user}}');
        }
    }

    对应的mysql字段类型可参考链接:http://www.yiiframework.com/doc-2.0/yii-db-schema.html

    3.通过migrate文件生成数据表到数据库使用 yii migrate 命令(要先在配置文件中配置好数据库信息并创建相应的数据库)

    由于mytest和mytable都为空,所以只创建了有内容的user表,查看数据库如图:

    migration表内容如下:

  • 相关阅读:
    Java实现 LeetCode 467 环绕字符串中唯一的子字符串
    Java实现 LeetCode 467 环绕字符串中唯一的子字符串
    从ramdisk根文件系统启动Linux成功
    linux中的设备名称和设备号
    设备与驱动的关系以及设备号、设备文件
    使用BusyBox制作Linux根文件系统
    使用Busybox-1.2.0制作根文件系统
    使用BusyBox制作根文件系统
    使用busybox制作rootfs
    uboot里读sd卡内容
  • 原文地址:https://www.cnblogs.com/benlightning/p/4460510.html
Copyright © 2011-2022 走看看