新闻中心
Lar*el如何生成和使用数据填充?(Seeder和Factory示例)
Lar*el 中 Factory 定义单条数据生成规则,Seeder 负责批量插入;通过 php artisan make:factory 和 make:seeder 创建,配合 faker 与 bcrypt 实现高效可维护的测试数据填充。

在 Lar*el 中,数据填充(Seeding)用于向数据库中插入测试或初始数据,Seeder 负责“执行插入”,Factory 负责“定义如何生成单条数据”。二者配合使用,能高效、可维护地初始化开发/测试环境。
创建 Seeder 和 Factory
先用 Artisan 命令生成:
-
Factory:运行
php artisan make:factory UserFactory --model=User,会在database/factories下生成工厂类,定义用户字段的模拟逻辑(如名字、邮箱、密码)。 -
Seeder:运行
php artisan make:seeder UsersTableSeeder,会在database/seeders下生成种子类,调用工厂批量插入数据。
编写 Factory(以 UserFactory 为例)
打开 UserFactory.php,修改 definition() 方法,返回一个关联数组:
public function definition(): array
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'password' => bcrypt('password'),
'email_verified_at' => now(),
];
}
注意:$this->faker 是 Lar*el 内置的 Faker 实例,支持大量真实感强的假数据;unique() 避免邮箱重复;bcrypt() 加密密码,符合 Lar*el 默认用户模型要求。
编写 Seeder 并调用 Factory
在 UsersTableSeeder.php 的 run() 方法中,用 User::factory()->count(50)->create(); 一次性创建 50 个用户。也可以指定字段覆盖:
User::factory()
->count(10)
->state(['email_verified_at' => null])
->create();
如果需要关联数据(比如为每个用户创建一条个人资料),可链式调用 has():
User::factory()
->has(Profile::factory()->count(1))
->count(20)
->create();
运行和管理填充
执行填充前确保数据库已迁移(php artisan migrate)。常用命令有:
-
php artisan db:seed—— 运行默认的DatabaseSeeder -
php artisan db:seed --class=UsersTableSeeder—— 只运行指定 Seeder -
php artisan db:seed --force—— 在生产环境也允许运行(需显式加此参数)
推荐把常用 Seeder 注册到 DatabaseSeeder.php 的 run() 方法中,保持主入口统一:
public function run(): void
{
$this->call([
UsersTableSeeder::class,
PostsTableSeeder::class,
CommentsTableSeeder::class,
]);
}
基本上就这些
。Factory 定义“怎么造数据”,Seeder 定义“造多少、何时造、跟谁关联”,配合 Faker 就能快速搭建出贴近真实的测试数据集。
以上就是Lar*el如何生成和使用数据填充?(Seeder和Factory示例)的详细内容,更多请关注php中文网其它相关文章!
# 如何实现
# 营销类文本推广方案
# 网站关键词优化外包价格
# 吉林专业网站建设检修
# 岳阳网站建设厂家
# 网站建设 互诺科技
# 北辰区seo万词霸屏
# 济南好网站建设品牌
# 连州seo优化
# 浙江品牌营销推广案例
# 江干区推广网站公司
# 各版
# 单条
# php
# 文件管理
# 如何将
# 绑定
# 链式
# 会在
# 子类
# 多语言
# 邮箱
# ai
# laravel
# word
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
快手官方唯一登录入口 谨防山寨钓鱼网站
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
Django表单验证失败时保留用户输入数据的最佳实践
Composer如何在生产环境安全地执行composer update
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
excel如何生成目录 excel一键生成工作表目录超链接
age动漫网站入口 age动漫官网直接访问入口
微博网页版主页入口 微博官方网站免登录访问
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
b站怎么删除评论_b站评论管理与删除操作
AO3官方可用镜像 Archive of Our Own网页版最新入口
Typer应用中动态命令行参数的解析与处理
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
J*a 递归快速排序中静态变量的状态管理与陷阱
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
Python模块化编程:有效管理依赖与避免循环引用
ArrayList与LinkedList操作复杂度详解:遍历与修改
Tabulator表格日期时间排序问题及自定义解决方案
PHP中高效并行检查多链接状态的教程
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
抖音网页版快捷访问 抖音网页版网页版入口操作教程
绝地鸭卫平a核爆刀流玩法攻略
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网
火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧
漫蛙漫画网页端入口 漫蛙2官方正版漫画站点
PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
vivo云服务网页版登录 怎么登录vivo云服务网页版
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
圆通快递查询实时追踪 圆通物流包裹状态快速查看
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
AO3最新镜像入口 Archive of Our Own官方平台访问
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
免费抖音短视频入口_抖音网页版短视频免费通道
内存疯狂猛猛涨价:主板销量直接腰斩!
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
c++ 获取系统当前时间 c++时间戳获取方法
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
顺丰快递查单号物流信息 顺丰快递小程序查询入口
AO3网页版最新入口合集 Archive of Our Own在线访问指南
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
优化大型XML文件解析:基于Python流式处理的内存高效方案
在WordPress中通过REST API获取BasicAuth保护的远程文章
Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法
抖音极速版最新版本 抖音极速版官方下载地址
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
Golang指针如何与map组合使用_Golang map指针组合实践


2025-12-16
浏览次数:次
返回列表