引言
在数据库创建之初,并没有什么数据,开发人员手动填充的数据,要等到很久才能有完整的一致性数据。
如果能填充一些伪数据,那会是不错的体验。
本文就来说说使用假数据填充数据库。
代码时间
为数据库填充数据,首先在命令行运行以下指令:
php artisan db:seed
没有输出,看上去像是什么都没有发生。其实是有的,我们在目录 database/seeds/DatabaseSeeder.php 可以看到新创建的文件。
文件内容如下图:
什么代码都没有,只是继承了 Seeder 类,并实现了 run() 方法。其中可实现的代码逻辑,示例部分给我们注释掉了:
$this->call('UsersTableSeeder::class');
这是一个生成器类,我们现在手动创建一个,使用脚手架指令:
php artisan make:seed EventTableSeeder
命令行输出内容:
Seeder created successfully.
表名文件创建完成,生成的文件在 database/seeds/EventTableSeeder.php内,默认模板内代码与上述
DatabaseSeeder.php 文件相似,我们手动实现 run() 方法,并添加逻辑代码:
其中 truncate 方法会删除原表内所有的记录,并把自增字段的值设置到初始值。然后我们使用模型的 create 方法
插入两条记录。
这样我们使用了Seeder方法为数据库初始化写入两条记录。接着在 DatabaseSeeder.php 文件内调用该类:
$this->call('EventsTableSeeder');
因为在同一个命名空间下,所以无需命令空间方式引入。在命令行输入以下指令:
php artisan db:seed
我们手动指定了生成器文件,所以可以看到输出内容:
Seeding: EventTableSeeder
现在检查数据库 events 表会发现多出了两条数据,正是我们在类文件内声明的。如果生成器类文件比较多,
我们仅仅想指定某一个生成器类文件,可以在命令行指定:
php artisan db:seed --class=EventTableSeeder
批量数据填充
手动造数据实在太累了,要是有伪数据就太好了。没问题,有一个 Faker 类库,专门为我们提供了随机伪数据的生成方法,
足以满足我们的需求。
我们改造上面的 EventTableSeeder 类文件的 run 方法。使用循环语句批量插入数据:
一个for循环顿时解放了我们的重复劳动,太好了!现在使用mysql客户端连接到数据库,
选择数据库并输入以下查询语句:
大家看到了吧,Faker 类提供的方法输出了很多无意义的填充数据,没关系,最起码有数据了不是吗?
写在最后
本文简明扼要地介绍了laravel数据库填充所使用的方法,我们可以手动填充,
也可以使用第三方库填充伪数据,效率明显提升很多。也只要准备好了数据,
才能谈得上业务逻辑和接口对接。这些数据也是应用程序的基础,所以很重要。
Happy coding 😃
我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者