# 数据库迁移
在 `ThinkPHP` 中,我们使用 `think-migration` 管理数据表结构,你可以把他看作是在数据库中的版本控制,我们使用该工具每次的操作都会有详细的时间进行记录,同样的,也可以无缝回滚或者修改.
## 迁移的好处
* 协同开发避免出错
* 数据表版本控制
* 部署简单方便
## 安装 think-migration
请按下 Ctrl+Shift+` 并切换到终端(请确保在网站根目录 thinkphp.test).
我们将使用 `Composer` 引入扩展 `think-migration`,键入命令:
~~~~ shell
composer require topthink/think-migration
~~~~
## 使用 think-migration
~~~~ shell
/* 创建迁移表 */
php think migrate:create Users
/* 弹出提示:Create migrations directory?[是否创建新目录?] */
键入:y
~~~~
这时候看到根目录,程序为我们创建了一个 `database/migrations` 的目录,并且创建了一个以时间戳开头的 User 文件.
进入创建好的 User 文件,修改代码:
~~~~ php
use think\migration\Migrator;
use think\migration\db\Column;
class Users extends Migrator
{
/**
* Migrate Up.
*/
public function up()
{
// create the table
$table = $this->table('users');
$table->addColumn('name', 'string')
->addColumn('email', 'string')
->addColumn('password', 'string')
->addColumn('avatar', 'string', ['null' => true, 'default'=>NULL, 'comment'=>'用户头像'])
->addColumn('god', 'boolean', ['default'=>FALSE, 'comment'=>'管理员'])
->addTimestamps('created_at', 'updated_at')
->addIndex('email', ['unique' => true])
->addIndex('god')
->create();
}
/**
* Migrate Down.
*/
public function down()
{
$this->dropTable('users');
}
}
~~~~
我们来看看这段代码干了什么:
* addColumn 字面意思,添加一列.
* addColumn('字段名', '值类型', '数组来表示 长度限制、默认值、注释等').
* $this->dropTable 字面意思,删除表.
* function up() 运行迁移时做的动作.
* function down() 回滚迁移时做的动作.
详细文档请查阅:数据库迁移文档: http://docs.phinx.org/
## 运行迁移
打开 `/config/database.php` 将对应的 数据库名、密码等 填写为宝塔面板上的值,如果提示权限被拒绝,将数据库密码换成 `root` 密码.
请按下 Ctrl+Shift+` 并切换到终端(请确保在网站根目录 thinkphp.test).
键入命令:
~~~~ shell
php think migrate:run
~~~~
这时候再打开 `PHPMyAdmin`,就有会看见迁移的数据表.
同样的,如果你键入命令:
~~~~ shell
php think migrate:rollback
~~~~
则会回滚到上一步的操作.
- 第一章. 基础信息
- 1.1 序言
- 1.2 关于作者
- 1.3 本书源码
- 1.4 反馈纠错
- 1.5 安全指南
- 1.6 捐助作者
- 第二章. 开发环境布置
- 2.1 编辑器选用
- 2.2 命令行工具
- 2.3 开发环境搭建
- 2.4 浏览器选择
- 2.5 第一个应用
- 2.6 Git 工作流
- 第三章. 构建页面
- 3.1 章节说明
- 3.2 静态页面
- 3.3 Think 命令
- 3.4 小结
- 第四章. 优化页面
- 4.1 章节说明
- 4.2 样式美化
- 4.3 局部视图
- 4.4 路由链接
- 4.5 用户注册页面
- 4.6 集中视图
- 4.7 小结
- 第五章. 用户模型
- 5.1 章节说明
- 5.2 数据库迁移
- 5.3 查看数据表
- 5.4 模型文件
- 5.5 小结
- 第六章. 用户注册
- 6.1 章节说明
- 6.2 注册表单
- 6.3 用户数据验证
- 6.4 注册失败错误信息
- 6.5 注册成功
- 6.6 小结
- 第七章. 会话管理
- 7.1 章节说明
- 7.2 会话
- 7.3 用户登录
- 7.4 退出
- 7.5 小结
- 第八章. 用户 CRUD
- 8.1 章节说明
- 8.2 重构代码
- 8.3 更新用户
- 8.4 权限系统
- 8.5 列出所有用户
- 8.6 删除用户
- 8.7 访客模式
- 8.8 优化前端
- 8.9 小结
- 第九章. 微博 CRUD
- 9.1 章节说明
- 9.2 微博模型
- 9.3 显示微博
- 9.4 发布微博
- 9.5 微博数据流
- 9.6 删除微博
- 9.7 小结