数据添补功能紧张是指利用分外规则,批量天生虚拟的数据库数据,用于实现对所开拓的运用进行测试。
如我们运用中存在用户信息表,须要填写测试1000名用户信息的存储及下一步业务操作利用,如果单独一条一条编写测试用的数据,所花费韶光较长,本钱较高。
借助Laravel框架我们可以快速利用其供应的工具完成虚拟测试数据的批量天生与存储,本文结合实际传授教化需求,对数据添补进行详细解释与实例剖析。

问题描述

本例问题需求来源于上一篇文章先容的航空公司票务业务处理运用需求,在该项目案例中,客户可通过sreach页面实现对航班信息进行检索。
页面设计及素材描述如下:

搜索页面设计样式

flight项目目录phpLaravel框架数据填充SeederFactory实例剖析 JavaScript

搜索页面设计样式如上图所示,为测试开拓运用的航班搜索功能,须要供应航班基本信息,项目哀求能够自动天生100条航班信息,详细哀求描述如下:

在供应的城市之间随机产生100个不同的航班。
不同的出发城市,目的地,航班韶光和航班类型各不相同。
航班号不得超过6个字符。
前两个是字母,别的四个是数字。
自动天生的航班号的前2个字符应相同。
出发城市,目的地和翱翔韶光的相同航班号应相同。
但是日期可能会有所不同。
不同的航班有不同的出发日期,但是最好将它们保留在数据库建立之前1天或5天之后进行测试。
办理方法、方法与步骤

该问题提出了须要利用Laravel供应的数据库工具、方法实现自动天生虚拟测试用记录,并对天生记录提出了详细哀求即规则,因此我们可以利用Laravel供应的数据迁移与数据添补功能快速天生符合哀求的记录,个中数据迁移紧张用于实现表的创建,数据添补紧张用于实现记录的天生。
本例未给出翱翔航班迁移文件,因此须要单独在MySQL中建立flights数据表用于实现记录的存储。
并再此根本上天生虚拟记录。
详细实现过程描述如下:

1、创建数据表

为完成任务,首先须要创建用于存储航班信息的数据库,本例创建数据表名为flights。
把稳给出的天生记录的条件,可以剖析判断在创建表过程中把稳的问题。
如,主键如何设置、数据类型为长度的设置等。
综合考虑以上成分创建如下构造数据表:

航班信息表flights

2、Eloquent模型的创建

Eloquent模型紧张用于建立数据表与类之间的关系,大略理解我们要实现对flights表进行操作,须要首先建立表与程序的关联,让程序中的类知道须要操作哪一张表。
在Laravel框架下须要在App文件夹下创建航班表对应的Eloquent模型,文件名字为Flights.php。
代码如下:

Eloquent模型

按照Eloquent模型规则可知class名字Flights即我们须要操作的数据表。
Eloquent 约定模型类映射表名是将类名由驼峰格式转化为小写+下划线(含多个单词的话),末了将其转化为复数形式。

3、定义Seeders添补器

seeder类紧张用于实现为数据库中的表添补虚拟测试数据,Laravel中所有的seeds都存在在database下的seeds文件夹中,因此为实现将航班信息自动填写的数据表中,我们须要定义FlightTableSeeder类。
可在运用原文件的Laravel对应目录下调用Artisan make:seeder天生seeder类。
本地路径下我们的命令实行代码即路径如下:

D:\xampp\htdocs\laravel6>php artisan make:seed FlightsTableSeeder

定义FlightTableSeeder

实行成功之后则会在指定路径中的文件夹中天生FlightTableSeeder.php文件,截图如下:

FlightTableSeeder.php文件

4、调用FlightTableSeeder添补器

定义完成添补器之后,下一步须要调用该添补器,Laravel默认供应了DatabaseSeeder类,在该类中通过利用call方法运行我们编写的FlightTableSeeder添补器,调用运行方法如下:

运行自定义seeder

5、利用模型工厂定义填充数据格式

在利用seeder进行数据添补时可以一条记录形式进行添补,结合本项目哀求,我们须要批量天生符合条件的记录。
因此我们采取模型工厂实现对数据格式进行定义,并借助factory方法实现向数据表中插入数据。
模型工厂是一个class,本例文件名称为FlightsFactory.php。
天生方法通过掌握台实行以下命令:

天生模型工厂类

实行完成后会自动在database的factories文件夹下天生FlightsFactory.php文件,下一步则可在该文件中按照项目哀求编写天生数据的格式。
其编写代码如下:

模型工厂数据格式定义

模型工厂类中数据格式基本定义描述如上图,个中flight_no格式为6位,前两位字母,后四位数字。
机型位300ER与A320两个中选择一个,韶光为time,日期为当前日期前1天或者后5天。
紧张规则约束是通过Faker类实现,该类定义了各种约束规则的表达形式,部分规则如下所示:

Faker规则定义

6、实行添补与效果展示

完成以上步骤事情之后我们就可以利用Laravel供应的artisan方法实现数据的自动天生与添补。
实行前可以利用 dump-autoload 命令重新天生 Composer 的自动加载器。
然后再实行php artisan make:seed FlightsTableSeeder完成数据添补。
代码如下:

dump-autoload 命令

php artisan make:seed FlightsTableSeeder

实行成功之后会给出绿色显示部分,seeding completed,添补成功,完成添补,下一步我们可以打开数据库检讨是否完成指定格式的数据添补。
数据库查询结果描述如下:

添补结果检讨

检讨结果表明,数据添补功能正常,批量天生了100条符合哀求的数据记录,完成项目哀求的各种约束,达到设计哀求,知足设计目标。
【本文由kid编程首发于今日头条】

本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。
如果您对以上方面有兴趣或代码缺点、建议与见地,可以联系作者,共同磋商。
期待大家关注!
干系文章链接如下:

Laravel框架-用户注册功能实现(路由、掌握器、视图)

数据库教程-MySQL数据库入门