yii2 migrate
如果需要新建数据表,执行:
php ./yii migrate/create 表名
会在migrations文件夹下生成一个文件
创建完以后,up方法用来编写改变数据库结构的代码;down方法中编写代码来恢复由up方法所做的改变。当使用migration升级数据库时,up方法会被调用,反之,down方法会被调用。
PS:
$this->string(300)->notNull()这样的代码指的是抽象定义字段类型,什么是抽象定义字段类型?就是说我并不直接写字段的类型,我只是写不同数据库中类似的字段定义。举个例子:
mysql数据库中有text数据类型,用来存储大文本一类数据。而mssql数据库中并没有text数据类型,但是有个类似的数据类型,叫做ntext。如果在数据库迁移到mysql的时候直接写实体字段类型text,那么如果改换数据库mssql的时候就会很麻烦。使用抽象定义字段类型,就可以避免这个问题。他会根据你选择的数据库与定义的抽象字段类型灵活改变。
如下是所有这些数据库访问方法的列表:
PHP Code复制内容到剪贴板
- yii\db\Migration::execute(): 执行一条 SQL 语句
- yii\db\Migration::insert(): 插入单行数据
- yii\db\Migration::batchInsert(): 插入多行数据
- yii\db\Migration::update(): 更新数据
- yii\db\Migration::delete(): 删除数据
- yii\db\Migration::createTable(): 创建表
- yii\db\Migration::renameTable(): 重命名表名
- yii\db\Migration::dropTable(): 删除一张表
- yii\db\Migration::truncateTable(): 清空表中的所有数据
- yii\db\Migration::addColumn(): 加一个字段
- yii\db\Migration::renameColumn(): 重命名字段名称
- yii\db\Migration::dropColumn(): 删除一个字段
- yii\db\Migration::alterColumn(): 修改字段
- yii\db\Migration::addPrimaryKey(): 添加一个主键
- yii\db\Migration::dropPrimaryKey(): 删除一个主键
- yii\db\Migration::addForeignKey(): 添加一个外键
- yii\db\Migration::dropForeignKey(): 删除一个外键
- yii\db\Migration::createIndex(): 创建一个索引
- yii\db\Migration::dropIndex(): 删除一个索引
提交迁移:
可以执行如下:
PHP Code复制内容到剪贴板
- .\yii migrate
这个指令会提交所有的迁移
或者这样,指定类名,提交一个迁移
PHP Code复制内容到剪贴板
- .\yii migrate m160623_034801_create_test_table
数据库中会出现一个叫做migration的表,用来记录迁移记录
还原迁移:
还原最近一次迁移:
PHP Code复制内容到剪贴板
- .\yii migrate/down
还原最近三次迁移:
PHP Code复制内容到剪贴板
- .\yii migrate/down 3
重做迁移:
重做迁移的意思是先还原指定的迁移,然后再次提交:
PHP Code复制内容到剪贴板
- .\yii migrate/redo ##重做最近一次提交的迁移
- .\yii migrate/redo 3 ##重做最近三次提交的迁移
列出迁移
可以通过指令列出提交或者未提交的迁移:
PHP Code复制内容到剪贴板
- .\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 #显示所有的未提交迁移