Laravel-数据库迁移

数据迁移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(迁移相关方法)

创建好的迁移表中,自带updown

  • 在运行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.创建数据表

Schemafacade的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()

猜你喜欢

转载自blog.csdn.net/zgy0777/article/details/82223915