首頁  >  文章  >  php框架  >  Laravel如何優雅填入SQL數據

Laravel如何優雅填入SQL數據

藏色散人
藏色散人轉載
2021-01-26 13:43:382211瀏覽

背景

Laravel如何優雅填入SQL數據我們都知道在Laravel 開發過程中,對於資料庫結構的修改可以透過

migration

完成,對於資料庫生產資料的預先填入可以使用seeder 完成。

如果預先填入的資料比較多,而又是在開發過程中產生的,手寫seeder 中的插入就顯得過於死板,你可能需要一筆一筆的複製修改這些內容:<pre class="brush:php;toolbar:false">\DB::table('software_categories')-&gt;insert(array(             0 =&gt;                 array(                     'id' =&gt; 1,                     'name' =&gt; '操作系统',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:22:31',                     'updated_at' =&gt; '2021-01-19 19:22:36',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             1 =&gt;                 array(                     'id' =&gt; 2,                     'name' =&gt; '办公应用',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:22:53',                     'updated_at' =&gt; '2021-01-19 19:22:53',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             2 =&gt;                 array(                     'id' =&gt; 3,                     'name' =&gt; '图像处理',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:22:59',                     'updated_at' =&gt; '2021-01-19 19:22:59',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             3 =&gt;                 array(                     'id' =&gt; 4,                     'name' =&gt; '网络工具',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:23:04',                     'updated_at' =&gt; '2021-01-19 19:23:10',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             4 =&gt;                 array(                     'id' =&gt; 5,                     'name' =&gt; '影音工具',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:23:35',                     'updated_at' =&gt; '2021-01-19 19:23:35',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             5 =&gt;                 array(                     'id' =&gt; 6,                     'name' =&gt; '系统工具',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:23:47',                     'updated_at' =&gt; '2021-01-19 19:23:47',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),             6 =&gt;                 array(                     'id' =&gt; 7,                     'name' =&gt; '设计工具',                     'description' =&gt; NULL,                     'deleted_at' =&gt; NULL,                     'created_at' =&gt; '2021-01-19 19:24:05',                     'updated_at' =&gt; '2021-01-19 19:24:05',                     'parent_id' =&gt; NULL,                     'order' =&gt; '0',                 ),         ));</pre>這些資料如果夠多,我相信你也一定會找一個好辦法來批次處理。

方案

一,我可以在開發過程中對預先填入的資料全部處理完成後,從資料庫匯出

.sql

文件,再作為腳本導入到生產環境。 二,我可以將資料庫中已存在的資料進行結構化處理,產生

seeder

文件,之後就可以透過 artisan db:seed 指令進行填入。

這兩種方法都可以。 SQL檔案直接匯入

使用資料庫管理工具,如 HeidiSQL 匯出所需的資料庫表至

.sql

檔案。 在Laravel 中,可以寫一個

command

#,邏輯中寫入以下程式碼:<pre class="brush:php;toolbar:false">DB::unprepared(file_get_contents('path/data.sql'));</pre>

Seeder填充這是我認為最佳的方案,畢竟Laravel 提供了完善的資料庫遷移和填充機制,何不利用它?

執行 composer require orangehill/iseed -vvv 安裝套件。

執行

php artisan iseed table_name

會自動在 database/seeders 目錄中建立對應表名的

seeder

檔案。 而後,我們就可以使用 artisan db:seed --class=YourTableSeeder 來指定填滿。

以上是Laravel如何優雅填入SQL數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除