您现在的位置是:自如初>LaravelLaravel

轻松学Laravel6数据填充之方式二模型工厂填充

温新 2019-09-10 22:03:05 Laravel 3741人已围观

简介上面说了使用填充器填充数据,为什么还会有模型工厂填充数据?原因是seeder填充数据主要是单个数据填充,若是遇到需要填充成千上万条数,seeder填充显然不方便,这时候模型工厂就应运而生了

模型工厂基于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)编写工厂文件

 2.png

Ps:注意点:通过命令生成工厂文件,命名空间与类文件名可能出现不正确的情况,有,则需要进行更改。

 

4)compser重新生成自动加载(不执行这一步也能生成成功)

命令:composer dump-autoload

 

5)创建seeder填充类

命令:php artisan make:seeder GoodsTableSeeder

 

6)编写通过seeder生成的填充文件,在run()方法中调用模型工厂填充数据

 3.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分

夕阳何处寻


很赞哦!(61)

文章评论

登录 注册

  • RDFYjolf    2023年05月22日

自如初--时间轴

站名:自如初

独白:向前走!向前走!

邮箱:ziruchu@qq.com

RSS: RSS

站点信息