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 #迁移回滚