laravel框架(数据表的迁移与填充)

迁移:创建数据表的操作+删除数据表的操作+修改数据表的操作
填充:往数据表里填充写入测试的数据(数据的插入操作)
必须是先迁移再填充

1.数据的迁移操作

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

1.1、迁移文件的创建与编写

迁移文件默认的位置:
laravel框架(数据表的迁移与填充)_第1张图片
已经存在的两个文件,如果不打算使用系统自带的认证模块的话需要删除掉
(1)创建一个迁移文件
使用命令 #php artisan make:migration create_paper_table
初始代码:
laravel框架(数据表的迁移与填充)_第2张图片
up代表创建数据表的方法
down代表删除数据表的方法
(2)编写迁移文件代码,使其能够实现数据表的创建与删除
Schema门面(类)是用于操作数据表的门面,调用其具体的方法之后就可以实现创建数据表与删除数据表,照搬原有语法实现试卷表paper的创建:
字段分析:
Id 表的主键,自增
Paper_name 试卷名称,唯一,varcher(100),不为空
Total_score 试卷总分,整形数字,tinyint,默认为100
Start_time 试卷开始考试时间,时间戳类型(整型int)
Duration 考试时间长度,单位分钟,整型tinyint
Status 试卷是否启用的状态,1表示启用,2表示禁用,默认为1,tinyint类型
在创建数据表的时候遵循语法:
t a b l e 表 示 整 个 表 的 实 例 语 法 : table表示整个表的实例 语法: tabletable -> 列类型方法(字段名,[长度/值范围])-> 列修饰方法([修饰的值])…;

1.2 执行迁移文件

执行分为up执行和down执行
up方法的执行:
如果在当前的项目中第一次执行迁移文件的话,则需要先去框架根目录下执行:

#php artisan migrate:install

在这里插入图片描述
在执行过上述命令后,在数据表中会多出一个数据表,migrationslaravel框架(数据表的迁移与填充)_第3张图片
此表的作用是用于创建记录迁移文件的记录数据表(可以看做类似于SVN、Git的版本控制机制)
需要执行up方法,则需要执行命令:#php artisan migrate
(注意:需要删除系统自带的迁移文件,只保留自己的)删除的原因,默认迁移操作会执行迁移文件夹中所有未被执行 的迁移文件
执行后生成paper表格
laravel框架(数据表的迁移与填充)_第4张图片
问题:如果再次执行php artisan migrate会怎么样?
不会怎么样,不会有任何操作。(在执行迁移的时候系统会将迁移文件夹里面文件与数据表的迁移记录进行匹配,匹配上不执行,匹配不上才执行

Down方法执行:(回滚操作,删除数据表

#php artisan migrate:rollback

回滚最后一次(批次号,针对的是批次号,不是单个表)的迁移操作,回滚操作不删除迁移文件
回滚操作只删除迁移表中的记录和对应的数据表,其他操作不执行
注意:删除(回滚)之后会删除上一个批次的迁移记录,并且同批次建立的数据表也会删除

批次号:同一次被执行的多个迁移文件其批次号相同。
针对迁移文件名的提示:如果迁移文件已经创建好了并且执行了,就不要去修改迁移文件的名称,容易出错。

迁移操作与sql语句操作类似,区别在于迁移文件将原先的sql语句从标准查询语言形式转化成了面向对象的形式

2.数据表填充器

填充操作就是往数据表中写测试数据的操作(增加操作),在开发阶段是很实用的功能。

2.1 填充器(种子文件)的创建与编写

(1)填充器默认所在的目录
laravel框架(数据表的迁移与填充)_第5张图片
通过其命名的含义能够说明,填充器是允许一个或者多个填充器填充所有的数据表的。(当然,也可以一个表一个填充器,也可以一个填充器填充多个表)。
(2)创建填充器
#php artisan make:seeder 填充器名称 【约定俗成的写法:大写表名+TableSeeder】
例如:以paper表为例,则名称应该为PaperTableSeeder
#php artisan make:seeder PaperTableSeeder
创建好的种子文件:
在这里插入图片描述
(3)【重点】编写填充器的代码,实现往数据表中写入数据
注意:在填充器文件中可以使用DB门面去新增数据,但是需要注意,DB门面在使用的时候不需要用户自己引入,一旦引入则报错,可以直接使用。建议使用DB门面方法写入新的数据。
使用DB类进行数据写入:
laravel框架(数据表的迁移与填充)_第6张图片
命令:#php artisan db:seed --class=需要执行的种子文件名(不带.php)

种子文件不像迁移文件,迁移操作有单独的对应关系表去记录,由于种子文件的执行没有任何的记录,所以在执行种子文件的时候需要指定需要执行的种子文件。
#php artisan db:seed --class=PaperTableSeeder
在这里插入图片描述
出现此信息说明成功执行。
此时在表里已有相关信息:
laravel框架(数据表的迁移与填充)_第7张图片
填充器的执行操作没有回滚一说,没有删除。如果需要回滚,则可以手动清空对应的数据表。

你可能感兴趣的:(笔记)