您现在的位置是:网站首页>>PHP>>Yii
Yii 使用migrations实现数据库迁移
发布时间:2019-04-09 18:00:51作者:wangjian浏览量:703点赞量:0
在我们开发过程中,时常会遇到数据库的变动,由于数据库的结构会时常发生变化,这时候我们就可以使用Yii提供的数据库迁移(migrations)功能来实现记录数据库的变化
一:migrations相关命令说明
我们在指定项目中使用命令行输入php yii
这时候我们可以看到migrate相关命令
相关命令解释:
php yii migrate/create #创建新的迁移
php yii migrate/down #还原迁移
php yii migrate/fresh #清空数据库并从头开始应用所有迁移
php yii migrate/history #显示迁移历史
php yii migrate/mark #修改迁移历史
php yii migrate/new #显示未提交的迁移
php yii migrate/redo #重做迁移(先还原指定的迁移,然后再次提交)
php yii migrate/to #提交指定迁移
php yii migrate/up (default) #提交所有迁移
二:创建迁移
使用如下命令yii migrate/create user
这时候会在@app/migrations 目录下创建一个新的名为m190409_094813_user.php的文件
m190409_094813_user.php文件内容如下<?php
use yii\db\Migration;
/**
* Class m190409_094813_user
*/
class m190409_094813_user extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
echo "m190409_094813_user cannot be reverted.\n";
return false;
}
}
文件中的safeUp()方法用于编写改变数据库结构代码,safeDown()方法用于编写回复safeUp()方法内编写的代码
例(创建一个user表):<?php
use yii\db\Migration;
/**
* Class m190409_094813_user
*/
class m190409_094813_user extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
//创建user表
$this->createTable('{{%user}}', [
'exam_id' => $this->primaryKey()->comment('用户ID'),
'user_no' => $this->string(64)->notNull()->defaultValue('')->comment('用户编号'),
'user_name' => $this->string(255)->notNull()->defaultValue('')->comment('用户名称'),
'status' => $this->tinyInteger(2)->notNull()->defaultValue(0)->comment('状态:0 禁用 1开启'),
'password' => $this->string(255)->notNull()->comment('密码'),
'create_time' => $this->integer()->notNull()->defaultValue(0)->comment('创建时间'),
'update_time' => $this->integer()->notNull()->defaultValue(0)->comment('更新时间'),
'creater_id' => $this->integer()->notNull()->defaultValue(0)->comment('创建人ID'),
'creater_ip' => $this->string(63)->notNull()->defaultValue('')->comment('创建人IP')
], 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=MyISAM COMMENT=\'用户表\'');
$this->createIndex('user_no', '{{%user}}', 'user_no');//创建索引
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
//删除索引
$this->dropIndex('user_no', '{{%user}}');
//删除表
$this->dropTable('{{%user}}');
}
}
二:提交迁移php yii migrate
这时候我们的数据库就会出现相应的变化,如上命令是提交所有未提交的迁移,提交指定迁移可以使用:php yii migrate/to m190409_094813_user #m190409_094813_user表示指定迁移的文件名
三:还原迁移php yii migrate/down #还原最近一次的迁移
php yii migrate/down 3 #还原最近三次迁移
以上为Yii中数据库迁移的基本使用
0
+1