Laravel中如何使用数据填充Seeder_Laravel填充初始数据操作步骤【教程】

发布时间 - 2026-01-28 00:00:00    点击率:
必须手动在DatabaseSeeder的run()方法中调用$this->call(UserSeeder::class)才能执行UserSeeder;推荐用Eloquent Factory生成数据,需显式定义非空字段,可用--class参数指定单个Seeder运行。

直接用 php artisan db:seed 跑不起来,大概率是没跑过 php artisan migrate,或者 DatabaseSeeder 里没调用你写的 Seeder 类。

如何创建并注册一个 Seeder 类

Laravel 不会自动发现新写的 Seeder,必须手动注册到 DatabaseSeederrun() 方法里。否则 db:seed 命令只会执行空逻辑。

  • 运行 php artisan make:seeder UserSeeder 生成类文件,位于 database/seeders/UserSeeder.php
  • 编辑 database/seeders/DatabaseSeeder.php,在 run() 方法中加入:
    $this->call(UserSeeder::class);
  • 确保 UserSe

    eder
    类的 run() 方法里有实际操作,比如 User::factory()->count(10)->create();

使用工厂(Factory)还是手动 new Model?

推荐优先用 Eloquent Factory,它能自动处理字段约束、关联关系和随机数据生成;手动 new User 容易漏掉非空字段或触发模型事件异常。

  • 工厂需配合 php artisan make:factory UserFactory --model=User 创建
  • 若数据库字段有 NOT NULL 但工厂没定义,默认值为 null,会导致插入失败,错误信息类似:
    SQLSTATE[HY000]: General error: 1364 Field 'email' doesn't have a default value
  • 工厂中可显式覆盖字段:
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
    ];

只运行某个 Seeder 而不是全部

避免每次重跑全部填充数据,尤其是开发中反复调试单个表时。

  • --class 参数指定类名:
    php artisan db:seed --class=UserSeeder
  • 类名必须带完整命名空间,如果项目启用了自定义命名空间(如 Database\Seeders),要写全:
    php artisan db:seed --class=Database\\Seeders\\UserSeeder
  • 注意 Windows 命令行中反斜杠要双写,Linux/macOS 可用单斜杠或引号包裹

Seeder 执行没有事务包装(除非你自己加),一旦中途出错,可能留下脏数据;线上环境严禁直接运行 db:seed,本地开发也建议先用 --dry-run 模拟(Laravel 10+ 支持)或先备份数据库。


# php  # linux  # laravel  # windows  # mac  # ai  # macos  # win  # cos  # NULL  # count  # 命名空间  # class  # 事件  # this  # database  # 数据库  # 尤其是  # 你自己  # 只会  # 线上  # 自定义  # 它能  # 错误信息  # 先用  # 跑过  # 命令行 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS7上新建站点并设置安全权限?  Linux系统运维自动化项目教程_Ansible批量管理实战  bootstrap日历插件datetimepicker使用方法  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Firefox Developer Edition开发者版本入口  如何在景安云服务器上绑定域名并配置虚拟主机?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  新三国志曹操传主线渭水交兵攻略  如何在云主机快速搭建网站站点?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何实现建站之星域名转发设置?  如何在搬瓦工VPS快速搭建网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在建站主机中优化服务器配置?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  JS实现鼠标移上去显示图片或微信二维码  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何获取免费开源的自助建站系统源码?  如何在企业微信快速生成手机电脑官网?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel如何实现用户密码重置功能?(完整流程代码)  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  南京网站制作费用,南京远驱官方网站?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何自定义分页视图?(Pagination示例)  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  黑客入侵网站服务器的常见手法有哪些?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Python文件异常处理策略_健壮性说明【指导】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何正确下载安装西数主机建站助手?