Yii2之数据库迁移(migrate)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Yii2之数据库迁移(migrate),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3114字,纯文字阅读大概需要5分钟。
内容图文
![Yii2之数据库迁移(migrate)](/upload/InfoBanner/zyjiaocheng/520/4d0b9cd0ea1b45f88776218492fff8a7.jpg)
关于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 <name>
比如:
yii migrate/create create_news_table
那么迁移目录中会多出一个类似m200311_020625_create_news_table.php的文件,文件代码如下:
<?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<YYMMDDHHMMSS><Name> 的格式自动生成,其中
<YYMMDDHHMMSS> 指执行创建迁移命令的 UTC 时间。
<Name> 和你执行命令时所带的 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框架官方文档
Yii2之数据库迁移(migrate)
标签:new turn text 记录 源代码 mss lse 默认 php
本文系统来源:https://blog.51cto.com/13238147/2498442
内容总结
以上是互联网集市为您收集整理的Yii2之数据库迁移(migrate)全部内容,希望文章能够帮你解决Yii2之数据库迁移(migrate)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。