数据迁移Migrations
1.生成迁移
Laravel建议使用php artisan Migration create_tablesName_table --[可选参数]
方式创建表格
php artisan make:migration create_users_table --create=users
php artisan make:migration add_is_admin_to_users_table --table=users
--create
–create=指定创建表名--table
指定了添加到哪个表,常用于为数据表添加字段。
使用迁移有以下好处(个人理解是保持建表一致,确保成员的字段格式一致)
- 多人并行开发
- 代码版本管理
- 数据库版本控制-如回滚/重置/更新等(后续模型工厂/数据填充可提现)
- 兼容多种数据系统
- 部署方便
2.默认迁移文件(生成路径)
默认保存在databases/migrations
中。laravel默认已为我们创建了两个模型
虽然Laravel登录模块集成了Auth类等功能。但实际开发中有各种第三方接口登录,改动时不太灵活,不建议使用
- database/migrations/2014_10_12_000000_create_users_table.php
- database/migrations/2014_10_12_100000_create_password_resets_table.php
3.迁移结构
在迁移文件中,默认引入以下命名空间
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
- Schema(目测是建表语法相关,up方法调用时需要引入该类的静态方法)
- Blueprint(闭包,依赖注入实例)
- Migration(迁移相关方法)
创建好的迁移表中,自带up
和down
- 在运行
migrate
时,调用up
方法会被调用(创建) - 在运行
migrate:rollback
时,调用down
方法会被调用(回滚)
4.运行迁移
4.1迁移
使用以下命名即可迁移
php artisan make:migrate
4.2回滚迁移
生成迁移后在数据库中能查看到对应文件,其中migration
包含batch
字段,该字段中的数值可作为rollback
step使用
php artisan make:migrate rollback --step=5
4.3回滚所有迁移
php artisan migrate:reset
4.4高效执行清空数据库
//重置数据库
php artisan migrate:refresh
//回滚数据库并进行数据填充。需要配置模型工厂、数据填充等
php artisan migreate:refresh --seed
数据表
1.创建数据表
Schema
facade的create
方法来创建数据表。该create
方法接收连个参数
- 第一个参数是数据表名称
- 第二个是闭包,此闭包会接收一个定义新数据表的
Blueprint
对象
Schema::create('users',function(Blueprint $table)){
//以$table->字段属性,添加需要的字段,
$table->increments('id')
}
还有一个往表中添加指定字段,后续补
数据表结构设置
- $table->engine=’InnoDB’; 指定表储存引擎(mysql)
- $table->charset=’utf-8’; 指定数据表的默认字符集(mysql)
- $tablie->collation=’utf8_unicode_ci’ 指定数据表的默认排序规则
2.重命名/删除数据表
创建新的迁移表基础上添加以下,再执行
Schema::rename($from,$to);
数据表字段
1.常用字段
命名 | 描述 |
---|---|
increments(‘id’) | 递增ID(主键),相当于【unsigned INTEGER】 |
string(‘name’,100) | 指定长度的VARCHAR |
text | 相当于text |
timestamps | 相当于创建了created_at和updated_at |
rememberToken() | 存放token |
2.常用字段修饰
命令 | 说明 |
---|---|
nullable | 此字段可写入为null,例如用户修改资料但不想改密码,设置password为nullable |
default(”) | 默认该值,例如模拟用户权限,默认数据填充的数据为false(没有管理员权限) |
3.索引
unique
唯一字段,例如用户注册时使用邮箱作为认证身份的唯一标识。
$table->string('email')->unique()