Laravel如何优雅填充SQL数据

发布时间 - 2021-01-26 00:00:00    点击率:

下面由Laravel教程栏目给大家介绍laravel解决Laravel 优雅填充 SQL 数据的方法,希望对需要的朋友有所帮助!

背景

我们都知道在 laravel 开发过程中,对于数据库结构的修改可以通过 migration 完成,对于数据库生产数据的预填充可以使用 seeder 完成。

如果预填充的数据比较多,而又是在开发过程中产生的,手写 seeder 中的插入就显得过于死板,你可能需要一笔一笔的复制修改这些内容:

\DB::table('software_categories')->insert(array(
            0 =>
                array(
                    'id' => 1,
                    'name' => '操作系统',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:22:31',
                    'updated_at' => '2025-01-19 19:22:36',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            1 =>
                array(
                    'id' => 2,
                    'name' => '办公应用',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:22:53',
                    'updated_at' => '2025-01-19 19:22:53',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            2 =>
                array(
                    'id' => 3,
                    'name' => '图像处理',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:22:59',
                    'updated_at' => '2025-01-19 19:22:59',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            3 =>
                array(
                    'id' => 4,
                    'name' => '网络工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:23:04',
                    'updated_at' => '2025-01-19 19:23:10',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            4 =>
                array(
                    'id' => 5,
                    'name' => '影音工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:23:35',
                    'updated_at' => '2025-01-19 19:23:35',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            5 =>
                array(
                    'id' => 6,
                    'name' => '系统工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:23:47',
                    'updated_at' => '2025-01-19 19:23:47',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            6 =>
                array(
                    'id' => 7,
                    'name' => '设计工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2025-01-19 19:24:05',
                    'updated_at' => '2025-01-19 19:24:05',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
        ));

这些数据如果够多,我相信你也一定会找一个好办法来批量处理。

方案

一,我可以在开发过程中对预填充的数据全部处理完成后,从数据库导出 .sql 文件,再作为脚本导入到生产环境。

二,我可以将数据库中已存在的数据进行结构化处理,生成 seeder 文件,之后就可以通过 artisan db:seed 命令进行填充。

这两种方法都可以。

SQL文件直接导入

使用数据库管理工具,如 HeidiSQL 导出需要的数据库表至 .sql 文件。

在 Laravel 中,可以编写一个 command,逻辑中写入以下代码:

DB::unprepared(file_get_contents('path/data.sql'));

Seeder填充

这是我认为最佳的方案,毕竟 Laravel 提供了完善的数据库迁移和填充机制,何不利用它?

执行 composer require orangehill/iseed -vvv 安装包。

执行 php artisan iseed table_name 会自动在 database/seeders 目录中创建对应表名的 seeder 文件。

而后,我们就可以使用 artisan db:seed --class=YourTableSeeder 来指定填充。


# laravel  # 就可以  # 过程中  # 这是  # 是在  # 你也  # 我认为  # 可以通过  # 给大家  # 可以使用  # 找一个 


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


相关推荐: java ZXing生成二维码及条码实例分享  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  如何安全更换建站之星模板并保留数据?  浅析上传头像示例及其注意事项  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  简单实现Android验证码  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  5种Android数据存储方式汇总  html如何与html链接_实现多个HTML页面互相链接【互相】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  微信小程序 canvas开发实例及注意事项  如何选择可靠的免备案建站服务器?  详解vue.js组件化开发实践  EditPlus中的正则表达式 实战(4)  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  MySQL查询结果复制到新表的方法(更新、插入)  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何打造高效商业网站?建站目的决定转化率  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何在万网利用已有域名快速建站?  如何快速查询域名建站关键信息?  智能起名网站制作软件有哪些,制作logo的软件?  js实现点击每个li节点,都弹出其文本值及修改  再谈Python中的字符串与字符编码(推荐)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Python高阶函数应用_函数作为参数说明【指导】  如何在Tomcat中配置并部署网站项目?  利用vue写todolist单页应用  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何在万网自助建站中设置域名及备案?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何生成腾讯云建站专用兑换码?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何在阿里云部署织梦网站?  如何基于云服务器快速搭建个人网站?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何获取PHP WAP自助建站系统源码?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  如何在香港免费服务器上快速搭建网站?  如何在 React 中条件性地遍历数组并渲染元素  高防服务器:AI智能防御DDoS攻击与数据安全保障  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项