合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ### 创建迁移文件 > yii migrate/create <name> ~~~ ./yii migrate/create create_test_table ~~~ > 会生成 /console/migrations/m200612_071636_create_test_table.php 迁移文件 ### 修改迁移文件 (根据业务) ~~~ class m200612_071636_create_test_table extends Migration { /** * {@inheritdoc} */ public function safeUp() { // 创建test表 $this->createTable('{{%test}}', [ 'id' => $this->primaryKey()->notNull()->comment('ID'), 'title' => $this->string(100)->notNull()->comment('标题')->unique(), 'content' => $this->text(), 'view_num' => $this->integer()->unsigned()->notNull()->defaultValue(0)->comment('浏览量'), 'created_at' => $this->dateTime()->comment('创建时间'), 'updated_at' => $this->dateTime()->comment('更新时间'), ]); // 新增字段 $this->addColumn('{{%test}}', 'user_name', $this->string(50)->unique()->comment('用户')->after('content')); $this->addColumn('{{%test}}', 'sex', $this->tinyInteger()->comment('性别(0未知/1男/2女)')->defaultValue(0)->after('user_name')); // 给字段添加注释 $this->addCommentOnColumn('{{%test}}', 'content', '内容'); // 修改字段 $this->alterColumn('{{%test}}', 'title', $this->string(300)->comment('标题x')); $this->renameColumn('{{%test}}', 'title', 'title2'); // 新增索引 $this->createIndex('sex_index', '{{%test}}', ['sex'], true); // 唯一索引 $this->createIndex('sex_username_index', '{{%test}}', ['user_name', 'sex'], false); // 复合索引 // 插入一条test数据 $this->insert('{{%test}}', [ 'id' => 1, 'title2' => 'haha', 'content' => 'haha from content', 'created_at' => '2017-09-08 12:33:42', 'updated_at' => '2017-09-08 13:34:47', ]); } /** * {@inheritdoc} * 该回滚方法可以为空,实际上如果执行了回滚的话,相当于也就执行空,migration表删除对应记录,并进行下一个回滚 */ public function safeDown() { // 删除索引 $this->dropIndex('sex_index', '{{%test}}'); $this->dropIndex('sex_username_index', '{{%test}}'); // 删除字段 $this->dropColumn('{{%test}}', 'user_name'); $this->dropColumn('{{%test}}', 'sex'); //删除一条数据 $this->delete('{{%test}}',[ 'id' => 1 ]); $this->dropTable('{{%test}}'); } } ~~~ ### 迁移文件更新操作 ~~~ # 更新迁移文件 # 会根据migration表里已更新的文件会自动排除,然后再根据剩下没有更新的迁移文件全部执行 # 执行顺序根据m200612_071636_create_test_table.php 里前面的数字从小到大执行 ./yii migrate # 回滚迁移文件,执行一次,回滚一个迁移文件,会从migration表删除对应的一条记录 ./yii migrate/down ~~~ ### 查看迁移历史 > 可以通过指令列出提交或者未提交的迁移: ~~~ .\yii migrate/history #显示最近10次提交的迁移 .\yii migrate/history 6 #显示最近5次提交的迁移 .\yii migrate/history all #显示所有的提交迁移 .\yii migrate/new #显示最近10次未提交的迁移 .\yii migrate/new 6 #显示最近6次未提交的迁移 .\yii migrate/new all #显示所有的未提交迁移 ~~~