在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 |
这样就在数据库中新建了一张表user和另一张表migration
其中migration表的内容大致如下,猜想这个version字段和每次执行命令时php文件的名字&文件里的class名有关,所以每次执行命令时需要改动文件名和文件里面的class名
那么,现在新建一张blog表,包含id、title、content、create_time四个字段
-
先将该php文件复制备份, 再将该文件重命名为m330524_201442_init.php(随机数字,只要和已有的version不同)
-
再将文件内的class m220524_201442_init extends Migration 中的 220524 改为 330524 (和文件名一样)
-
编辑字段内容
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表建好了,随机添加两条数据无误
==========2019.7.23添加============
哎我图呢?......算了
如果要建一张新表
控制台先将路径切换到advanced根目录
yii migrate/create create_blog_table
输入y,回车。会在advanced\console\migrations目录下出现一个新文件m190723_023311_create_blog_table.php,其内容如下
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表