linux yii 数据库迁移,Yii数据库迁移

在开发数据库驱动的应用程序的过程中,数据库结构随源代码发展。Yii提供 数据库迁移 功能,可以让您跟踪数据库更改。

Yii提供了以下迁移命令行工具 -

创建新的迁移

恢复迁移

应用迁移

重新应用迁移

显示迁移状态和历史记录

创建迁移

让我们创建一个新的数据库迁移。

第1步 - 在基本应用程序模板的项目根目录下打开控制台窗口并运行。

./yii migrate/create add_news_table

上述命令将在 migrations

文件夹中创建一个新的迁移文件(在这种情况下为m160113_102634_add_news_table.php)。

该文件包含以下代码 -

use yii\db\Schema;

use yii\db\Migration;

class m160113_102634_add_news_table extends Migration {

public function up() {

}

public function down() {

echo "m160113_102634_add_news_table cannot be reverted.\n";

return false;

}

/*

// Use safeUp/safeDown to run migration code within a transaction

public function safeUp() {

}

public function safeDown() {

}

*/

}

?>

每个数据库迁移都是一个扩展了 yii \ db \ Migration 类的PHP 类。类名称以以下格式生成 -

m_

其中 < YYMMDD_HMMSS>是执行迁移命令的UTC日期时间,是您在控制台命令中提供的参数。

在升级数据库时调用up()方法,而在降级时调用down()方法。

步骤2 - 要将新表添加到数据库,请按照这种方式修改迁移文件。

use yii\db\Schema;

use yii\db\Migration;

class m160113_102634_add_news_table extends Migration {

public function up() {

$this->createTable("news", [

"id" => Schema::TYPE_PK,

"title" => Schema::TYPE_STRING,

"content" => Schema::TYPE_TEXT,

]);

}

public function down() {

$this->dropTable('news');

}

/*

// Use safeUp/safeDown to run migration code within a transaction

public function safeUp() {

}

public function safeDown() {

}

*/

}

?>

在上面的代码中,我们在 up() 方法中创建了一个名为news的新表,并将该表放在 down() 方法中。

该 消息

表由三个字段组成:ID,标题和内容。在创建表或列时,我们应该使用抽象类型,以便迁移独立于数据库类型。例如,在MySQL的情况下,TYPE_PK将被转换为int(11)NOT

NUL AUTO_INCREMETN PRIMARY KEY。

步骤3 - 要升级数据库,请运行此命令。

./yii migrate

4d6ae4f129aa2b7e6bf30377e770d28a.png

以上命令将列出所有尚未应用的可用迁移。然后,如果确认应用迁移,它将在所有新迁移类中运行safeUp()或up()。

第4步 - 只应用三个可用的迁移,您可以运行。

./yii migrate 3

第5步 - 您还可以定义数据库应迁移到的特定迁移。

#使用时间戳指定迁移

yii migrate/to 160202_195501

#使用可以由strtotime()分析的字符串

yii migrate/to "2016-01-01 19:55:01"

#使用全名

yii migrate/to m160202_195501_create_news_table

#使用UNIX时间戳

yii migrate/to 1393964718

第6步 - 恢复迁移(执行down()或safeDown()方法),运行。

./yii migrate/down

7b13fcc64101cf40149fb5d8b95feb42.png

第7步 - 要恢复最近五次最近应用的迁移,您可以运行。

./yii migrate/down 5

第8步 - 重做(恢复,然后再次应用)迁移,运行。

./yii migrate/redo

b0d72fef7ebce722e5204f77414a41d6.png

要列出已经应用的迁移,请使用这些命令 -

yii migrate / new #显示前10个新迁移

yii migrate / new 3 #显示前3个新迁移

yii migrate / new all #显示所有新的迁移

yii migrate / history #显示最近10次应用的迁移

yii migrate / history 20 #显示最近20次应用迁移

yii migrate / history all #显示所有应用的迁移

有时您需要添加或删除特定表格中的列。您可以使用 addColumn() 和 dropColumn() 方法。

第1步 - 创建一个新的迁移。

./yii migrate/create add_category_to_news

第2步 - 以这种方式修改新创建的迁移文件。

use yii\db\Schema;

use yii\db\Migration;

class m160113_110909_add_category_to_news extends Migration {

public function up() {

$this->addColumn('news', 'category', $this->integer());

}

public function down() {

$this->dropColumn('news', 'category');

}

}

?>

现在,如果运行 ./yii migrate , 则应将 类别列添加到新闻表中。相反,如果运行 ./yii migrate / down

1 ,则应删除类别列。

执行数据库迁移时,确保每次迁移已成功或失败非常重要。建议将DB操作包含在事务中。要实现事务性迁移,您应该将迁移代码放在 safeUp() 和

safeDown() 方法中。如果这些方法中的任何操作失败,则以前的所有操作都将回滚。

前面的“交易方式”的例子是 -

use yii\db\Schema;

use yii\db\Migration;

class m160113_110909_add_category_to_news extends Migration {

public function safeUp() {

$this->addColumn('news', 'category', $this->integer());

}

public function safeDown() {

$this->dropColumn('news', 'category');

}

}

?>

所述 YII \分贝\迁移 类提供用于操纵数据库下列方法-

execute() - 执行原始SQL语句

createTable() - 创建一个表

renameTable() - 重命名表

insert() - 插入单行

batchInsert() - 插入多行

update() - 更新行

删除() - 删除行

addColumn() - 添加一列

renameColumn() - 重命名一列

dropColumn() - 删除一列

alterColumn() - 改变列

dropTable() - 删除一个表

truncateTable() - 删除表中的所有行

createIndex() - 创建一个索引

dropIndex() - 删除索引

addPrimaryKey() - 添加主键

dropPrimaryKey() - 删除主键

addForeignKey() - 添加一个外键

dropForeignKey() - 删除外键

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值