[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 #显示所有的未提交迁移
~~~
- 基础教程
- 入门安装
- Yii2 composer 安装慢解决
- Cookies
- 数据库操作
- 数据提供者
- 助手类
- 验证规则
- GridView
- DetailView
- YII2分页
- JS、CSS的引用
- Excel导出
- 中文转拼音
- 发送邮件
- 第三方插件
- Session跨域共享
- Url跨域访问
- 场景应用
- 查询条件链
- Session分布式共享
- Redis的使用
- mongodb
- 高级教程
- 自定义gii模板
- 角色权限管理(RBAC)
- user组件的配置
- 国际化(I18N)
- 小部件(Widget)
- 模块(Module)
- 行为(Behavior)
- 缓存(Cache)
- migrate 数据库迁移
- phpstorm
- 快捷键
- 自定义
- 其它插件