thinkPHP使用migrate实现数据库迁移

22次阅读

共计 1540 个字符,预计需要花费 4 分钟才能阅读完成。

thinkPHP 的数据库迁移工具:topthink/think-migration

一:安装 topthink/think-migration

这里注意你安装 topthink/think-migration 时需要注意你的 thinkPHP 版本,这里我的 thinkPHP 版本为 5.1,所以可以安装 topthink/think-migration 的 2.0 版本,无法安装 3.0 版本,选择你适合的版本进行安装

composer require topthink/think-migration=2.0.*

安装完成之后在命令行执行:

php think

如下表示 migrate 安装成功


二:使用 topthink/think-migration 实现数据库迁移

1:创建迁移类

在命令行执行

php think migrate:create CreateUser

执行完成之后我们就和在./database/migrateions 目录下创建一个 migrate 迁移文件


2:实现数据库迁移

migrate 方法使用文档:http://docs.phinx.org/en/late…

[1]:migrate 代码说明:

在 migrate 中有三个方法

up: 在 migrate:run 时执行 (前提是文件中不存在 change 方法)

down: 在 migrate:rollback 时执行 (前提是文件中不存在 change 方法)

change:migrate:run 和 migrate:rollback 时执行 (如果存在该方法 则不会去执行 up 与 down)

一般情况下我一般将 migrate 文件中的 change 方法删除,up 方法专门放置新增和更新表的操作,down 方法放置删除表和删除字段操作

(1) 新增表:

// create the table
$table = $this->table('user', ['id' => 'user_id', 'comment' => '用户表', 'engine' => 'MyISAM', '']);
$table->addColumn('user_name', 'string', ['limit' => 15, 'default' => '','comment'=>' 用户名 '])
    ->addColumn('password', 'string', ['limit' => 15, 'default' => '','comment'=>' 密码 ',])
    ->addColumn('status', 'boolean', ['limit' => 1, 'default' => 0, 'comment' => '状态'])
    ->addIndex(['user_name'], ['unique' => true])// 为 user_name 创建索引并设置唯一 (唯一索引)
    ->addTimestamps()// 默认生成 create_time 和 update_time 两个字段
    ->create();

(2) 更新表:

$this->table('user')
    ->addColumn('test', 'string', ['limit' => 15, 'default' => '','comment'=>' 测试 '])// 在 user 表中增加一个 test 字段
    ->update();

(3) 删除表:

$this->table('user')->drop();

(4) 删除字段

$this->table('user')
    ->removeColumn('test')// 删除 user 表中的 test 字段
    ->save();

[2]:migrate 命令:

migrate 常用的命令有三个,分别为:

php think migrate:create CreateUser  #创建一个迁移类
php think migrate:run  #执行迁移
php think migrate:rollback #迁移回滚 

正文完
 0