# 數據庫遷移
在 `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 小結