您现在的位置是:自如初>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)编写工厂文件
Ps:注意点:通过命令生成工厂文件,命名空间与类文件名可能出现不正确的情况,有,则需要进行更改。
4)compser重新生成自动加载(不执行这一步也能生成成功)
命令:composer dump-autoload
5)创建seeder填充类
命令:php artisan make:seeder GoodsTableSeeder
6)编写通过seeder生成的填充文件,在run()方法中调用模型工厂填充数据
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)
相关文章
- GitHub Copilot CURD 提高了效率但也存在问题
- GitHub Copilot 体验
- Laravel 10.x 使用 Tailwind CSS
- Laravel 10.x - Inertiajs 使用 composer require tightenco/ziggy 组件
- Laravel 10.x 安装 Inertiajs & Vue3
- Laravel 10 CURD 演示
- Laravel 使用 Server 层
- Linux 系统安装 Laravel 安装器 无效的解决方法
- Vue3 & Vite 中如何使用 Tailwind CSS 之 Laravel9后台实现-前后端分离演示案例(三)
- Laravel9 使用 barryvdh/laravel-dompdf 创建 PDF 文件
文章评论
-
RDFYjolf 2023年05月22日