linux yii 数据库迁移,Yii2之数据库迁移(migrate)

关于Yii2的数据迁移,与laravel等其他框架一样,在开发和维护一个数据库驱动的应用程序时,数据库的结构会随代码的改变而改变。例如,在开发应用程序的过程中,会增加一张新表且必须得加进来; 在应用程序被部署到生产环境后,需要建立一个索引来提高查询的性能等等。 因为一个数据库结构发生改变的时候源代码也经常会需要做出改变,Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。

这里分享Yii2.0框架数据库迁移的使用,控制台如何使用migrate命令。

1、默认迁移文件

所有创建的迁移文件都被统一放在 console/migrations 文件夹里,打开后可以看到默认的类似m200311_020625_user.php(这里举例表名为user)的php文件。可以看到在该文件里面定义了一个 m200311_020625_user类,并继承自 Migration 基类。m200311_020625_user 有两个方法 up 和 down :

当我们运行迁移时,up 方法会被调用;

当我们回滚迁移时,down 方法会被调用

2、创建迁移(注意yii命令在框架根目录)

yii migrate/create

比如:

yii migrate/create create_news_table

那么迁移目录中会多出一个类似m200311_020625_create_news_table.php的文件,文件代码如下:

use yii\db\Migration;

class m150101_185401_create_news_table extends Migration

{

public function up()

{

}

public function down()

{

echo "m101129_185401_create_news_table cannot be reverted.\n";

return false;

}

每个数据库迁移都会被定义为一个继承自 yii\db\Migration 的 PHP 类。

类的名称按照 m 的格式自动生成,其中

指执行创建迁移命令的 UTC 时间。

和你执行命令时所带的 name 参数值相同。

3、迁移文件的详细编码示范:

在迁移类当中,你应当在 up() 方法中编写改变数据库结构的代码。 你可能还需要在 down() 方法中编写代码来恢复由 up() 方法所做的改变。 当你通过 migration 升级数据库时, up() 方法将会被调用,反之, down() 将会被调用。 如下代码展示了如何通过迁移类来创建一张 news 表:

use yii\db\Schema;

use yii\db\Migration;

class m150101_185401_create_news_table extends \yii\db\Migration

{

public function up()

{

$this->createTable('news', [

'id' => Schema::TYPE_PK,

'title' => Schema::TYPE_STRING . ' NOT NULL',

'content' => Schema::TYPE_TEXT,

]);

}

public function down()

{

$this->dropTable('news');

}

}

4、生成迁移

yii migrate/create create_post

利用 --fields 选项指定字段参数,可以立即创建字段如下:

yii migrate/create create_post --fields="title:string,body:text"

生成的迁移如下:

/**

Handles the creation for table post.

*/

class m150811_220037_create_post extends Migration

{

/**

@inheritdoc

*/

public function up()

{

$this->createTable('post', [

'id' => $this->primaryKey(),

'title' => $this->string(),

'body' => $this->text(),

]);

}

/**

@inheritdoc

*/

public function down()

{

$this->dropTable('post');

}

}

5、提交迁移

yii migrate 或yii migrate/up

如果你确定你需要提交这些迁移, 它将会按照类名当中的时间戳的顺序,一个接着一个的运行每个新的迁移类里面的 up() 或者是 safeUp() 方法

按照如下格式使用 migrate/to 命令 来指定数据库应该提交哪一个迁移:

yii migrate/to m150101_185401_create_news_table

6、回滚迁移

yii migrate/down

本文参考了Yii框架官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值