轻松学Laravel6数据填充之方式二模型工厂填充
模型工厂基于 Eloquent 模型类通过工厂方法进行大批量填充数据。**如要使用模型工厂为 users 表进行数据填充,那么就必须有一个 Users 模型类与之对应。**为了更方便理解模型工厂填充数据,下面将为 goods 表进行数据填充。
1)创建数据表模型
$ php artisan make:model Goods
Ps:1)该命令将在 app 目录下生成 Goods 模型类文件;2)生成 Goods 模型类之后,只要数据表字段符合Laravel6 规则,就不用管。
2)创建模型工厂(注意语义化、明确化)
$ php artisan make:factory GoodsFactory
Ps:该命令会在 database/factories 目录下生成对应的工厂文件
3)编写工厂文件
image/20190910/1568124118687691.png
Ps:注意点:通过命令生成工厂文件,命名空间与类文件名可能出现不正确的情况,有,则需要进行更改。
4)compser 重新生成自动加载(不执行这一步也能生成成功)
$ composer dump-autoload
5)创建 seeder 填充类
$ php artisan make:seeder GoodsTableSeeder
6)编写通过 seeder 生成的填充文件,在 run()方法中调用模型工厂填充数据
image/20190910/1568124127314727.png
7)执行填充数据
$ php artisan db:seed --class=GoodsTableSeeder
4.3、方式二、模型工厂数据填充的另外的一些方法
此步骤接着4.2的步骤写,这是另外的方法,当做补充,根据个人的代码风格进行使用,但是一定要语义化,让别人一看就知道这个文件是干嘛的。
方式一:
5)database/seeds 目录下的 DatabaseSeeder.php 文件 run() 方法中编写模型填充
$this->call(GoodsTableSeeder::class);
Ps:此方式通过 call() 方法进行数据填充,一次只能填充一条数据。
方式二:
5)通过全局 factory() 方法进行 N 条数据填充
factory(\App\Goods::class, 100)->create();
Ps:一次填充100条数据
6)执行填充命令
命令:php artisan db:seed // 执行所有填充文件
命令:php artisan db:seed --class=填充文件 // 指定单一独立的填充文件进行填充
Ps:如 php artisan db:seed --class=DatabaseSeeder
作者语:
到这里数据填充完成了。温习完成及对笔记的整理,所花费的时间比较长。对比于官方文档与中文文档的不易理解及逻辑乱的现象(毕竟是外国人写的),我相信,这篇文章对于过程及执行顺序都进行了良好的整理,并对实际发生的错误进行了Ps说明,因此,你不需要看繁琐而又难懂的Laravel文档,本篇文章就足以让你写出数据填充功能来。
每一步都是我进行了实际的测试,保证了每一步骤的无误可运行。由于个人精力及能力有限,我会尽在以后的笔记中写出实际的用途与场景。我期待和优秀的你一起进行学习交流!我是夕阳何处寻。
2019年9月10日 01点44分
夕阳何处寻