posts - 58,  comments - 2,  trackbacks - 0

在advanced\console\migrations文件夹下有一个 m130524_201442_init.php 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
use yii\db\Schema;
use yii\db\Migration;
class m130524_201442_init extends Migration
{
    public function up()
    {
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
            $tableOptions 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
        }
        $this->createTable('{{%user}}', [
            '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 down()
    {
        $this->dropTable('{{%user}}');
    }
}

用cmd命令行进入advanced目录 ( 该目录下有yii.bat )

执行命令,选yes(输入y)

1
yii migrate console/migrations/m130524_201442_init.php

 

QQ截图20160730174518.png

 

这样就在数据库中新建了一张表user和另一张表migration

QQ截图20160730175048.png

 

其中migration表的内容大致如下,猜想这个version字段和每次执行命令时php文件的名字&文件里的class名有关,所以每次执行命令时需要改动文件名和文件里面的class名

QQ截图20160730175245.png

 

那么,现在新建一张blog表,包含id、title、content、create_time四个字段

 

  1. 先将该php文件复制备份, 再将该文件重命名为m330524_201442_init.php(随机数字,只要和已有的version不同)

  2. 再将文件内的class m220524_201442_init extends Migration 中的 220524 改为 330524 (和文件名一样)

  3. 编辑字段内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
use yii\db\Schema;
use yii\db\Migration;
class m220524_201442_init extends Migration
{
    public function up()
    {
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
          $tableOptions 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB COMMENT="文章表"';
        }
        $this->createTable('blog', [
            'id' => $this->primaryKey(),
            'title' => $this->string(100)->notNull()->defaultValue(''),
            'content' => $this->text(),
            'create_time' => $this->datetime(),
        ],$tableOptions);
    }
    public function down()
    {
        $this->dropTable('blog');
    }
}

最后执行命令,选yes

1
yii migrate console/migrations/m130524_201442_init.php

可以看到blog表建好了,随机添加两条数据无误

QQ截图20160730180528.png

 

 

 

==========2019.7.23添加============

哎我图呢?......算了

如果要建一张新表

控制台先将路径切换到advanced根目录

yii migrate/create create_blog_table

输入y,回车。会在advanced\console\migrations目录下出现一个新文件m190723_023311_create_blog_table.php,其内容如下

<?php

use yii\db\Migration;

/**
 * Handles the creation of table `{{%blog}}`.
 */
class m190723_023311_create_blog_table extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->createTable('{{%blog}}', [
            'id' => $this->primaryKey(),
        ]);
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        $this->dropTable('{{%blog}}');
    }
}

目前只有ID自增,现随便加几个字段

    public function safeUp()
    {
        $this->createTable('{{%blog}}', [
            'id' => $this->primaryKey(),
            'title' => $this->string(100)->notNull()->defaultValue(''),
            'content' => $this->text(),
            'create_time' => $this->datetime(),
        ]);
    }

这就准备好了,再在控制台中输入

yii migrate

输入y,回车,则看到mysql里面会增加几张表(migrations目录下有几个文件就新增几张表),其中一张就是blog表

posted on 2017-01-08 09:02 longzhankunlun 阅读(...) 评论(...) 编辑 收藏