1. [thinkphp官方migrate应用文档](https://www.kancloud.cn/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实用笔记