遇見 Laravel 的午後(Part 8)
在建立Model之前我們要完成幾個動作,在前一篇文章有介紹到migration的應用,但是建立好資料表了,但是裡面卻沒有資料,其實對於一個開發者來說,要建立假資料是一個很麻煩的事情,沒資料又不能測試CRUD,我們可以透過 Laravel 提供的 Seeder 類別來新增假資料進去,讓我們可以很方便些。
什麼是 Seeding?
Seed 照翻譯來看是種子,Seeding 就是播種,那在 Laravel 中稱之為假資料,我們需要新增多少假資料,就是靠他了。
Seeder是如何執行?
Seeder 的類別是獨立的,在 專案 > database > seeds > DatabaseSeeder.php
的這個檔案為程式的執行點,裡面所有需要執行的Seeder,統一由這個執行點去做一個管理。
如何建立Seeder檔?
來建一個Member的Seeder,資料表裡的假資料,命名方式一般以
「Model名稱+複數+TableSeeder」。
1 | $ php artisan make:seeder MembersTableSeeder |
專案 > database > seeds > MembersTableSeeder.php
開啟 MembersTableSeeder.php
的檔案,Laravel 提供的起始程式碼。
起始的原始碼,只會有一個 run 的方法,用artisan執行時,只會執行這個方法。
※ 我們將註解刪除,方便觀看。
1 |
|
新增單筆假資料
當用到Carbon的方法,記得要use他,不然會無法執行。
1 |
|
加載 Carbon ,解決讀取不到的問題。
1 | $ composer dump-autoload |
Carbon參考1:Carbon 時間套件
Carbon參考2:Laravel中日期時間處理包Carbon的簡單使用
Carbon參考3:Class Carbon\Carbon not found
型態相關方法:Laravel 7 官網
密碼的加密技術
- [Day25] 簡單加密演算法見面 - StanleyJui
- 密碼學、Hash、編碼 - 愷開
- 淺談MD5加密演算法中的加鹽值(SALT) - ITREAD
- PHP之密碼加密的幾種方式 - 程式前沿
- [Day-29] (實作)bcrypt將使用者密碼加密 - 10程式中
- 雜湊函式 - Wiki
- bcrypt (‘password’) 和 Hash::make (‘password’) 一样吗? - zhangbao
執行單一Seeder
使用 --class
執行單一的Seeder
1 | $ php artisan db:seed --class=MembersTableSeeder |
設定Seeder管理檔案
設定Seeder執行點的檔案,方便未來哪些檔案要執行與不執行。
DatabaseSeeder.php
使用 call 方法 $this->call(seeder檔名稱::class);
執行所需要的Seeder。
1 |
|
執行多個Seeder
為什麼標題是說執行多個Seeder,原因是因為指令在執行的時候,只執行 專案 > database > seeds > DatabaseSeeder.php
裡面的 DatabaseSeeder 這個class。
1 | $ php artisan db:seed |
新增多筆假資料
要新增多筆假資料其實就只要外面加上一個for迴圈就可以達到目的,但我為了讓資料有辨識度,在class 外面我寫了三個亂數function,分別用在密碼、姓名、電話三個欄位。
1 |
|
PHP 註解規則使用方式
[ PHP ] – 利用亂數取的隨機的英數字帳號
各種SQL語法
清除資料表資料
1 | DB::table('members')->delete(); |
MySQL語法
1 | TRUNCATE TABLE `members`; |
指令操作
1 | $ php artisan migrate:refresh |
新增資料
1 | DB::table('members')->insert([ |
資料表歸零重新計算
1 | ALTER TABLE `members` AUTO_INCREMENT =0; |
結論
其實我們在散播種子的之前,可能需要將種子的結構去做好,才有辦法將種子播種出去,所以在做假資料內容的時候,需要把呈現的資料內容做個處理,再去做產生,才會達到資料的一致性,Laravel 提供這個功能其實造福各開發者,但可能還有些麻煩之處,但下一章節會介紹Factory快速產生假資料。
標籤: w3HexSchool
PHP
Laravel
原文作者: Sian
原文鏈接: https://dew31794.github.io/2020/06/21/遇見 Laravel 的午後(Part 8)/
版權聲明: 轉載請註明出處(必須保留作者署名及鏈接)