## 数据迁移
迁移就像是数据库中的版本控制,它让团队能够轻松的修改跟共享应用程序的数据库结构。新的迁移文件将会被放置在 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
- 启动与关闭
- 前端
- 微信