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表内容如下:

  • 相关阅读:
    Weblogic任意文件上传漏洞(CVE-2018-2894)复现
    Angular动态创建组件之Portals
    nodejs 开发企业微信第三方应用入门教程
    系列文章|OKR与敏捷(三):赋予团队自主权
    Angular开发技巧
    系列文章|OKR与敏捷(二):实现全栈敏捷
    系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突
    OKR与Scrum如何强强联手
    Service Worker
    RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 原文地址:https://www.cnblogs.com/benlightning/p/4460510.html
Copyright © 2011-2022 走看看