laravel的数据表的迁移

一、数据表的迁移(重点)

迁移:创建数据表的操作 + 删除数据表的操作。
填充:往数据表里填充写入测试的数据(数据的插入操作)。

1.1 数据的迁移操作

在迁移过程中,操作可以分为两个部分:创建与编写迁移文件、执行迁移文件。

1.1.2 迁移文件的创建与编写

迁移文件默认的位置:
在这里插入图片描述
1、创建迁移文件
例:需要创建试卷的数据表,假设数据表的名字叫做paper。迁移文件名:create_paper_table

创建的时候可以通过自动代码生成工具artisan命令来执行迁移文件的生成。
php artisan make:migration 迁移文件名

在这里插入图片描述在这里插入图片描述
在写之前含义如下:
在这里插入图片描述
Schema门面(类)是用于操作数据表的门面,调用其具体的方法之后就可以实现创建数据表与删除数据表,语法如上。
实现试卷表paper的创建:

id 表的主键,自增
Paper_name 试卷名称,唯一,varchar(100),不为空
Total_score 试卷总分,整型数字,tinyint,默认为100
Start_time 试卷开始考试时间,时间戳类型(整型int)
Duration 考试时间长度,单位分钟,整型tinyint
Status 试卷是否启用的状态,1表示启用,2表示禁用,默认为1,tinyint类型。

在创建数据表的列的时候遵循语法:

$table 表示整个表的实例
语法:$table -> 列类型方法(字段名, [长度/值范围]) -> 列修饰方法([修饰的值]);
列类型方法的作用:指定列的名称并且设置列的类型长度或者其值范围(仅针对枚举)。修饰方法:主要是补充列的一些特征,例如有些列不能为空,或者有默认值等等。
常见的修饰方法有:
comment() 添加注释信息
default() 指定列的默认值
nullable() 允许该列的值为NULL
nusigned() 设置无符号的

常用的列类型:

列类型解释
$table -> string(‘email’)等同于数据库中的VARCHAR列
$table -> string(‘name’, 100)等同于数据库中的VARCHAR,带一个长度
$table -> increments(‘id’)数据库主键自增ID
$table -> tinyInteger(‘numbers’)等同于数据库中的TINYINT类型
$table -> integer(‘votes’)等同于数据库中的INTEGER类型
$table -> enum(‘choices’, [‘foo’, ‘bar’])等同于数据库中的ENUM类型

创建数据表的迁移代码:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePaperTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('paper', function (Blueprint $table) {
            // id  表的主键、自增
            $table->increments('id') -> comment('自增主键');
            // paper_name  试卷名称,唯一,varchar(100),不为空
            $table->string('paper_name', 100) -> comment('试卷名称') -> unique();
            // Total_score  试卷总分,整型数字,tinyint,默认为100
            $table->tinyInteger('total_score') -> comment('试卷总分') -> default(100);
            //start_time 试卷开始考试时间,时间戳类型(整型int)
            $table->integer('start_time') -> comment('考试开始时间');
            // duration  考试时间长度,单位分钟,整型tinyint
            $table->tinyInteger('duration') -> comment('考试时长');
            // status 试卷是否启用状态:1、表示启用。2、表示禁用。默认为1,tinyint类型
            $table->tinyInteger('status') -> comment('试卷启用状态') -> default(1);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('paper');
    }
}

如下:
在这里插入图片描述

1.2 执行迁移文件

执行分为up执行和down执行。

1.2.1 up方法的执行:

如果在当前的项目中第一次执行迁移文件的话,则需要先去执行(从而产生一个迁移记录表):
php artisan migrate:install

在这里插入图片描述
在这里插入图片描述
作用:用于创建记录迁移文件的记录数据表(可以看作类似于svn的版本控制机制)。
需要执行up方法,则需要执行命令:(注意:需要删除系统自带的迁移文件,只保留自己的)php artisan migrate
在这里插入图片描述
在这里插入图片描述

1.2.2 Down 方法执行:

down方法执行:(回滚操作,删除数据表)
php artisan migrate:rollback 【回滚最后一次(批次号,针对的是批次号,不是单个表)的迁移操作,回滚操作不删除迁移文件】
回滚操作只删除迁移表中的记录和对应的数据表,其他操作不执行。

注意:删除(回滚之后)会删除上一个批次的迁移记录,并且同批次建立的数据表也会删除,但是迁移文件依旧存在,方便后期继续迁移(创建数据表)。
批次号:同一次被执行的多个迁移文件其批次号相同。

针对迁移文件名的提示:如果迁移文件已经创建好并且执行了,就不要去修改迁移文件的名称,容易出错的。

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值