Laravel如何优雅填充SQL数据

                                                       

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

Laravel如何优雅填充SQL数据

背景

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

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享