1. [thinkphp官方migrate應用文檔](http://www.hmoore.net/thinkphp/master-database-and-model/265553)
1. [文檔1](https://www.bobcoder.cc/index/post/detail/id/145.html)
1.[Migration官方文檔]()
1. [原代碼](https://github.com/top-think/think-migration/tree/2.0/src)
在migrate中有三個方法
? ? ? ?up:在migrate:run時執行(前提是文件中不存在change方法)
? ? ? down:在migrate:rollback時執行(前提是文件中不存在change方法)
? ? ? change:migrate:run 和migrate:rollback時執行 (如果存在該方法 則不會去執行up 與down)
```
createTable(創建表)
renameTable(重命名表)
addColumn(添加字段)
renameColumn(重命名字段)
addIndex(添加索引)
addForeignKey(添加外鍵)
```
# 命令行使用方法
think migrate:create,文件名須采用**駝峰命名法** 首字母必須用大寫
migrate:rollback ?-t回滾到制定的版本
### 可用字段
數據庫結構構造器包含了許多字段類型,供你構建數據表時使用:
| 命令 | 描述 |
| --- | --- |
| `Column::bigInteger('votes');` | 相當于 BIGINT 型態。 |
| `Column::binary('data');` | 相當于 BLOB 型態。 |
| `Column::boolean('confirmed');` | 相當于 BOOLEAN 型態。 |
| `Column::char('name', 4);` | 相當于 CHAR 型態,并帶有長度。 |
| `Column::date('create_time');` | 相當于 DATE 型態。 |
| `Column::dateTime('create_time');` | 相當于 DATETIME 型態。 |
| `Column::decimal('amount', 5, 2);` | 相當于 DECIMAL 型態,并帶有精度與基數。 |
| `Column::enum('choices', ['foo', 'bar']);` | 相當于 ENUM 型態。 |
| `Column::float('amount');` | 相當于 FLOAT 型態。 |
| `Column::integer('votes');` | 相當于 INTEGER 型態。 |
| `Column::json('options');` | 相當于 JSON 型態。 |
| `Column::jsonb('options');` | 相當于 JSONB 型態。 |
| `Column::longText('description');` | 相當于 LONGTEXT 型態。 |
| `Column::mediumInteger('numbers');` | 相當于 MEDIUMINT 型態。 |
| `Column::mediumText('description');` | 相當于 MEDIUMTEXT 型態。 |
| `Column::smallInteger('votes');` | 相當于 SMALLINT 型態。 |
| `Column::string('email');` | 相當于 VARCHAR 型態。 |
| `Column::string('name', 100);` | 相當于 VARCHAR 型態,并帶有長度。 |
| `Column::text('description');` | 相當于 TEXT 型態。 |
| `Column::time('sunrise');` | 相當于 TIME 型態。 |
| `Column::tinyInteger('numbers');` | 相當于 TINYINT 型態。 |
| `Column::timestamp('added_on');` | 相當于 TIMESTAMP 型態。 |
| `Column::uuid('id');` | 相當于 UUID 型態。 |
### 字段修飾
除了上述的字段類型列表,還有一些其它的字段「修飾」,你可以將它增加到字段中。例如,若要讓字段「nullable」,那么你可以使用`setNullable`方法:
~~~
$this->table('user')
->addColumn(Column::string('name')->setNullable())
->create();
~~~
以下列表為字段的可用修飾。
| 修飾 | 描述 |
| --- | --- |
| `->setAfter('column')` | 將此字段放置在其它字段「之后」(僅限 MySQL) |
| `->setComment('my comment')` | 增加注釋 |
| `->setDefault($value)` | 為此字段指定「默認」值 |
| `->setNullable()` | 此字段允許寫入 NULL 值 |
| `->setUnsigned()` | 設置?`integer`?字段為?`UNSIGNED` |
### 特殊字段
~~~
$this->table('user')
->addTimestamps() //添加create_time和update_time兩個字段
->addSoftDelete() //添加delete_time字段
->addMorphs('taggable') //加入整數 taggable_id 與字符串 taggable_type
->create();
~~~
# 新增表
```
//表改名稱
->renameTable('新的表名稱')
->save();
```
```
// create the table
$table = $this->table('users',array('engine'=>'MyISAM'));
$table->addColumn('username', 'string',array('limit' => 15,'default'=>'','comment'=>'用戶名,登陸使用'))
->addColumn('password', 'string',array('limit' => 32,'default'=>md5('123456'),'comment'=>'用戶密碼'))
->addColumn('login_status', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'登陸狀態'))
->addColumn('login_code', 'string',array('limit' => 32,'default'=>0,'comment'=>'排他性登陸標識'))
->addColumn('last_login_ip', 'integer',array('limit' => 11,'default'=>0,'comment'=>'最后登錄IP'))
->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登錄時間'))
->addColumn('is_delete', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'刪除狀態,1已刪除'))
->addIndex(array('username'), array('unique' => true))
->create();
```
# 表字段變更
```
//重命名字段
$this->table('user')->renameColumn('old_name','new_name');
//修改字段屬性
$this->table('user')->changeColumn(Column::integer('votes')->setNullable());
//移除字段
$this->table('user')->removeColumn('name');
```
- 文檔說明
- 5.1對比5.0.X版本需要注意點
- 待解答問題QA
- THINKPHP基礎
- 常用技巧
- tp5.1系統信息
- 容器、Facade、依賴注入
- 其它要點記錄
- 數據庫與模型
- 數據集
- AQ問題集
- API開發
- restful開發
- restful測試之ZClient開發
- api開發
- 緩存
- 組件開發
- 采集組件ZSnoopy
- restful測試組件ZClient
- thinkphp各功能模塊
- thinkphp-Log
- 隊列thinkphp-Queue
- THINKPHP擴展
- 單元測試
- 類庫庫遷移工具Migration
- 命令行
- 關于console擴展要點
- 附錄
- 第三方實用PHP庫
- 實用IP庫
- phpQuery庫
- Guzzle庫
- Markdown解釋庫Parsedown
- 上線的項目debug組件
- nette/utils實用函數庫
- 推薦框架DolphinPHP
- Thinkphp之widget
- 表單組件form
- 前端框架推薦
- 推薦框架fastadmin
- PHP7最新語法
- 前端框架
- Echart
- mysql觸發器
- PHP實用技巧與函數
- composer實用筆記