Yii2数据库迁移migrate的使用

Yii2实践教程 2019年9月23日 4.6K

migrate主要是做数据库创建、更新和删除用的,Yii2为我们提供了这一个功能,方便我们在开发网站过程中对数据库进行操作,但是根据我的经验在实际的开发用到的这个很少,不过这功能也有他的方便之处,特别是在更换数据库时。

migrate的语法

./yii migrate/create <name> //创建文件,name是个必填项

注意:<name>这个只能字母、数字、下划线,因为这个指令会生成一个迁移类,并且这个<name>将会是生成类名的一部分。

举个例子:
切换到根目录,执行:./yii migrate/create ff_admin_user 会提示是否创建文件选择yes即可。

localhost:webroot feifeixueyuan$ ./yii migrate/create ff_admin_user
Yii Migration Tool (based on Yii v2.0.15.1)

Create new migration '/web/feifeixueyuan/webroot/console/migrations/m181023_051301_ff_admin_user.php'? (yes|no) [no]:yes
New migration created successfully.

上方命令执行完成后将会在根目录 /console/migrations/下生产m181023_051301_ff_admin_user.php文件。

看一下m181023_051301_ff_admin_user.php文件的内容

class m181023_051301_ff_admin_user extends Migration
{

public function up()
{
$tableOptions = null;
if ($this->db->driverName === 'mysql') {
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
}
$this->createTable('{{%admin_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);
//初始化插入数据
$this->insert('{{%admin_user}}', [
'id' => 1,
'auth_key' => 'nQpUL5ATcZnB',
]);
}

public function down()
{
$this->dropTable("{{%admin_user}}");
}

[wppay]代码中的方法up是用来创建数据库的结构的,down方法是用来恢复由up代码执行后所做的改变,我们若对数据库进行升级可以调用up方法,恢复可以调用down方法。
代码$this->string()->notNull()指的是抽象自定义字段类型,就是说并不直接写字段的类型,而是写每个数据库中类似的自定义字段,比如:mysql中有个字段类型为text,而mssql中的并没有text类型,但是有个类似的类型是ntext,这样在数据库迁移时就会很麻烦,但是使用自定义抽象类型就很简单了,Yii已经帮我们把底层的封装好了,只需要简单的执行命令即可迁移。

下面是访问数据库时的方法列表:
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(); //删除一个索引

创建数据库可以执行如下代码:
./yii migrate //提交迁移
./yii migrate m181023_051301_ff_admin_user.php . //指定类名,提交一个迁移
执行完后数据库migration会有一条操作记录。(migration就是一个日志表)
./yii migrate/down //还原迁移
./yii migrate/down 3 //还原最近三次迁移
./yii migrate/redo //重做最近一次的迁移
./yii migrate/redo 3 //重做最近三次的迁移

可以通过下面的命令,查看迁移的历史
./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 //显示所有的未提交迁移

[/wppay]

未经允许不得转载:飞飞学院 » Yii2数据库迁移migrate的使用

文章评论

您需要之后才可以评论
18点赞 0评论 收藏 QQ分享 微博分享