## 數據遷移
遷移就像是數據庫中的版本控制,它讓團隊能夠輕松的修改跟共享應用程序的數據庫結構。新的遷移文件將會被放置在 system/database/migrations 目錄中。每個遷移文件的名稱都包含了一個時間戳,以便讓 hdphp 確認遷移的順序。
[TOC]
## 遷移指令
### 新增表
```
php hd make:migration CreateArticleTable --create=article
```
### 修改表
```
php hd make:migration ChangeArticleTable --table=article
```
### 遷移回滾
```
php hd migrate:rollback
```
### 遷移重置
執行遷移重置后將會回滾所有遷移數據。
```
php hd migrate:reset
```
### 執行遷移
```
php hd migrate
#或執行以下代碼也可
php hd migrate:make
```
## 操作方法
### 新增表
新增表是指創建用于構建表的數據遷移文件。
系統將在system/database/migrations 目錄中創建文件,文件包括up與down 兩個方法,up是執行遷移時運行的方法,down是回滾時執行的方法。
~~~
Schema::create( 'article', function ( Blueprint $table ) {
$table->char('hash', 50)->index('hash')->comment('標識');
$table->char( 'name', 30 )->nullable();
},'這是表注釋' );
~~~
### 維護表
維護字段指修改已經存在的字段屬性或添加一個新的表字段。
系統將在system/database/migrations 目錄中創建文件,文件包括up與down 兩個方法,up是執行遷移時運行的方法,down是回滾時執行的方法。
文件中添加以下代碼用于修改 name 字段長度為50,并添加新字段 about。
```
Schema::table('users', function (Blueprint $table) {
//修改字段
$table->string('name', 50)->change();
//添加字段
$table->string('about', 100)->add();
});
```
## 字段類型
| 命令 |描述 |
| --- | --- |
| $table->increments | 遞增 ID(主鍵) |
| $table->text('description') | 相當于 TEXT 型態 |
| $table->mediumtext('content') | 相當于 MEDIUMTEXT 型態 |
|$table->tinyInteger('numbers')|相當于 TINYINT 型態|
|$table->smallint('numbers')|相當于 SMALLINT 型態|
|$table->integer('total')| 相當于 INTEGER(INT) 型態|
|$table->mediumint('total')| 相當于 MEDIUMINT 型態|
|$table->char('name', 30)|相當于 CHAR 型態,并帶有長度|
|$table->string('email') | 相當于 VARCHAR 型態 |
|$table->string('name', 100)|相當于 VARCHAR 型態,并帶有長度|
|$table->timestamps()|加入 created_at 和 updated_at 字段|
|$table->decimal('amount', 5, 2)| DECIMAL 型態,并帶有精度與基數|
|$table->double('column', 15, 8)|相當于 DOUBLE 型態,總共有 15 位數,在小數點后面有 8 位數|
|$table->enum('sex', ['boy', 'girl'])|相當于 ENUM 型態|
|$table->float('amount',5,2)|相當于 FLOAT 型態|
|$table->date('createtime')|相當于 DATE 型態|
|$table->datetime('createtime')|相當于 DATETIME 型態|
## 字段修飾
除了上述的字段類型列表,還有一些其它的字段「修飾」,你可以將它增加到字段中。例如,若要讓字段「nullable」,那么你可以使用 nullable 方法:
```
Schema::create( 'article', function ( Blueprint $table ) {
$table->char( 'name', 30 )->nullable();
},'這是表注釋' );
```
以下列表為字段的可用修飾。
| 修飾 | 描述 |
| --- | --- |
| ->nullable() | 此字段允許寫入 NULL 值 |
|->defaults($value)|為此字段指定「默認」值|
|->comment('注釋')|增加注釋|
|->unsigned()|設置 integer 字段為 UNSIGNED|
使用修飾符的示例如下
```
Schema::create( 'article', function ( Blueprint $table ) {
$table->increments( 'id' );
$table->string( 'title', 100 )->index();
$table->tinyInteger( 'nums' )->unsigned();
$table->char( 'name', 30 )->nullable()->defaults( '后盾網' )->comment( '這是注釋' );
$table->timestamps();
},'這是表注釋');
```
## 創建索引
以下指令只有在創建表時可以使用
| 指令 |說明 |
| --- | --- |
| $table->string('email')->index() | 創建普通索引 |
| $table->string('email')->unique()| 創建字段時直接創建該字段的索引 |
維護表時的索引操作請使用 [數據庫組件](http://doc.hdphp.com/215186#_14) 管理索引
- 文檔已經遷移到后盾人
- 介紹
- 框架特性
- 開發規范
- 許可協議
- 作者向軍
- 安裝框架
- 更新框架
- 基礎
- 入口文件
- 應用配置
- 優雅鏈接
- 目錄結構
- 系統常量
- 自動加載
- 應用密鑰
- 系統函數
- CSRF保護
- 依賴注入
- 跨域訪問
- 配置
- 配置文件
- 基本功能
- 擴展配置
- c 函數
- 控制器
- 定義聲明
- 基本使用
- 相關函數
- 響應消息
- 路由
- 基礎知識
- 基礎路由
- 路由參數
- 參數檢測
- 依賴注入
- 控制器
- 分組路由
- RESTful
- 別名路由
- 數據
- 配置相關
- 核心操作
- 查詢構造器
- 日志記錄
- 分頁處理
- 事務處理
- 函數相關
- 數據庫
- 數據遷移
- 數據填充
- 模型
- 定義模型
- 模型動作
- 模型驗證
- 自動完成
- 自動過濾
- 字段保護
- 數據填充
- 多表關聯
- 分頁處理
- 倉庫
- 數據倉庫
- 查詢規則
- 視圖
- 基礎知識
- 模板配置
- 模板文件
- 分配數據
- 系統標簽
- 擴展標簽
- 緩存模板
- 模板繼承
- 視圖函數
- widget
- vue組件
- 中間件
- 中間件
- 緩存
- 基本操作
- 文件緩存
- 數據表緩存
- 服務
- 服務容器
- 定制服務
- 相關函數
- 請求
- 基本使用
- 請求擴展
- 測試
- 基礎知識
- 基本使用
- HTTP測試
- 調試
- 調試模式
- 日志管理
- 組件
- 多語言
- 響應處理
- Cookie
- Session
- 驗證碼
- XML
- 自動驗證
- 文件處理
- 壓縮解壓
- RBAC
- 數組增強
- 分頁管理
- 圖像處理
- 生成靜態
- 加密解密
- 字符串
- 數據集合
- 工具服務
- 目錄操作
- 郵件發送
- CURL
- QQ登錄
- 數據備份
- 購物車
- 日志處理
- 命令組件
- 二維碼
- 后盾云
- 日期處理
- 阿里
- 支付寶
- 阿里云直播
- 阿里云短信
- 阿里云郵件
- 阿里云OSS
- SOCKET
- 啟動與關閉
- 前端
- 微信