
laravel5.5数据库之数据填充(实践)
初始化Seeder文件
发布日期:2025-04-04 04:26:19
浏览次数:14
分类:精选文章
本文共 1558 字,大约阅读时间需要 5 分钟。
数据库迁移与填充数据攻略
数据库迁移与填充数据攻略
数据库迁移是开发过程中常需要进行的操作,一是用于实现数据版本控制,二是用于批量生成测试数据。在Laravel框架中,实现数据库迁移和填充数据相对简便,本文将重点介绍常用方法。
一、背景
在软件开发过程中,团队成员可能会使用各自不同的测试数据,导致测试结果出现不一致。为了避免这一问题,对数据库中的测试数据也有必要实施版本控制。数据库迁移的方式类似于文件迁移,通过填充文件保存数据并执行填充操作。
填充数据主要有两种方式:一种是编写Seeder文件填充数据,另一种是利用模型工厂生成批量数据。
二、编写Seeder填充数据
通过运行以下命令生成新的Seeder文件:
php artisan make:seeder GoodsTableSeeder
生成后的Seeder文件会被存储在/database/seeds
目录下。文件内容大致如下:
- 在run方法中添加数据
- 执行数据插入
- 创建模型文件
- 定义工厂
- 创建Seeder文件
- 注册Seeder
- 执行批量填充
编辑GoodsTableSeeder.php,添加以下插入数据代码:
public function run(){ DB::table('goods')->insert([ 'goods_name' => '电动牙刷', 'goods_price' => '120.23', 'num' => 30, 'descr' => '这是一条测试数据', ]);}
运行以下命令执行数据填充:
php artisan db:seed --class=GoodsTableSeeder
若需要重新加载模型关系,可先运行:
composer dump-autoload
三、使用模型工厂填充数据
模型工厂适用于需要批量生成数据的情况。
确保项目根目录下有正确的模型配置,常规情况下已经配置好,若需要可执行以下命令:
php artisan make:model Models/Goods
通过修改/database/factories/ModelFactory.php
添加工厂定义:
define(Goods::class, function(Faker $faker) { return [ 'goods_name' => $faker->name, 'goods_price' => $faker->numberBetween(100, 3000), 'num' => $faker->numberBetween(20,50), 'descr' => $faker->text, ];});
重复第一步,创建对应的Seeder文件并添加批量生成代码:
public function run(){ $goods = factory(Goods::class, 10)->make(); Goods::insert($goods->toArray());}
在DatabaseSeeder.php
中添加如下内容:
$this->call([ GoodsTableSeeder::class,]);
运行以下命令执行批量数据生成:
php artisan db:seed
注意事项:
此方法可用于开发阶段,生产环境不建议使用,以免大量测试数据影响数据库性能。建议开发完成后,根据实际需要删除测试数据或采用数据清理方案。
数据库迁移与填充数据操作完成后,恭喜您成功实施数据库数据管理!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月19日 12时03分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
leetcode Valid Parentheses
2025-04-05
Leetcode | Simplify Path
2025-04-05
LeetCode – Refresh – 4sum
2025-04-05
LeetCode – Refresh – Valid Number
2025-04-05
leetcode — edit-distance
2025-04-05
LeetCode 中级 - 有序链表转换二叉搜索树(109)
2025-04-05
leetCode 字符串反转
2025-04-05
LeetCode 无重复字符的最长子串 获取字符串中不重复的子串最大长度
2025-04-05
LeetCode 热题 HOT 100 (java算法)实时更新 未完
2025-04-05
leetCode 给定数组,目标值 计算数组下标
2025-04-05
leetcode 验证回文字符串 java实现
2025-04-05
LeetCode(229):Majority Element ||
2025-04-05
leetcode--
2025-04-05
LeetCode--020--括号匹配
2025-04-05
leetcode--2.两数相加
2025-04-05
leetcode-28-Implement strStr()
2025-04-05
LeetCode-32.最长有效括号
2025-04-05
Leetcode-966 Vowel Spellchecker(元音拼写检查器)
2025-04-05
Leetcode-991 Broken Calculator(坏了的计算器)
2025-04-05