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 分享