我們都知道在Laravel 開發過程中,對於資料庫結構的修改可以透過
migration如果預先填入的資料比較多,而又是在開發過程中產生的,手寫seeder
中的插入就顯得過於死板,你可能需要一筆一筆的複製修改這些內容:<pre class="brush:php;toolbar:false">\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',
),
));</pre>
這些資料如果夠多,我相信你也一定會找一個好辦法來批次處理。
方案
一,我可以在開發過程中對預先填入的資料全部處理完成後,從資料庫匯出
.sql 文件,之後就可以透過 artisan db:seed
指令進行填入。
這兩種方法都可以。 SQL檔案直接匯入
使用資料庫管理工具,如 HeidiSQL 匯出所需的資料庫表至
.sql#,邏輯中寫入以下程式碼:<pre class="brush:php;toolbar:false">DB::unprepared(file_get_contents('path/data.sql'));</pre>
Seeder填充這是我認為最佳的方案,畢竟Laravel 提供了完善的資料庫遷移和填充機制,何不利用它?
執行
php artisan iseed table_name 會自動在 database/seeders
目錄中建立對應表名的
檔案。 而後,我們就可以使用
artisan db:seed --class=YourTableSeeder
來指定填滿。
以上是Laravel如何優雅填入SQL數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!