3分鐘短文:造假!Laravel為資料庫填充偽資料

ragus發表於2020-09-30

引言

在資料庫建立之初,並沒有什麼資料,開發人員手動填充的資料,要等到很久才能有完整的一致性資料。

如果能填充一些偽資料,那會是不錯的體驗。

圖片

本文就來說說使用假資料填充資料庫。

程式碼時間

為資料庫填充資料,首先在命令列執行以下指令:

php artisan db:seed

沒有輸出,看上去像是什麼都沒有發生。其實是有的,我們在目錄 database/seeds/DatabaseSeeder.php 可以看到新建立的檔案。

檔案內容如下圖:

pic

什麼程式碼都沒有,只是繼承了 Seeder 類,並實現了 run() 方法。其中可實現的程式碼邏輯,示例部分給我們註釋掉了:

$this->call('UsersTableSeeder::class');

這是一個生成器類,我們現在手動建立一個,使用腳手架指令:

php artisan make:seed EventTableSeeder

命令列輸出內容:

Seeder created successfully.

表名檔案建立完成,生成的檔案在 database/seeds/EventTableSeeder.php內,預設模板內程式碼與上述

DatabaseSeeder.php 檔案相似,我們手動實現 run() 方法,並新增邏輯程式碼:

pic

其中 truncate 方法會刪除原表內所有的記錄,並把自增欄位的值設定到初始值。然後我們使用模型的 create 方法

插入兩條記錄。

這樣我們使用了Seeder方法為資料庫初始化寫入兩條記錄。接著在 DatabaseSeeder.php 檔案內呼叫該類:

$this->call('EventsTableSeeder');

因為在同一個名稱空間下,所以無需命令空間方式引入。在命令列輸入以下指令:

php artisan db:seed

我們手動指定了生成器檔案,所以可以看到輸出內容:

Seeding: EventTableSeeder

現在檢查資料庫 events 表會發現多出了兩條資料,正是我們在類檔案內宣告的。如果生成器類檔案比較多,

我們僅僅想指定某一個生成器類檔案,可以在命令列指定:

php artisan db:seed --class=EventTableSeeder

批量資料填充

手動造資料實在太累了,要是有偽資料就太好了。沒問題,有一個 Faker 類庫,專門為我們提供了隨機偽資料的生成方法,

足以滿足我們的需求。

我們改造上面的 EventTableSeeder 類檔案的 run 方法。使用迴圈語句批量插入資料:

pic

一個for迴圈頓時解放了我們的重複勞動,太好了!現在使用mysql客戶端連線到資料庫,

選擇資料庫並輸入以下查詢語句:

pic

大家看到了吧,Faker 類提供的方法輸出了很多無意義的填充資料,沒關係,最起碼有資料了不是嗎?

寫在最後

本文簡明扼要地介紹了laravel資料庫填充所使用的方法,我們可以手動填充,

也可以使用第三方庫填充偽資料,效率明顯提升很多。也只要準備好了資料,

才能談得上業務邏輯和介面對接。這些資料也是應用程式的基礎,所以很重要。

Happy coding :-)

我是@程式設計師小助手,專注程式設計知識,圈子動態的IT領域原創作者

本作品採用《CC 協議》,轉載必須註明作者和本文連結
write-less-do-more-make-you-out-of-door

相關文章