遇見 Laravel 的午後(Part 8、9)延伸篇
延伸 Part 6 的建立資料表,我們要將空的資料表建立一點資料。
建立會員類別的Seeder
命名方式一般以「Model名稱+複數+TableSeeder」,以大駝峰式命名法。
1 | $ php artisan make:seeder MembersCategoryTableSeeder |
之前有提到這個資料表預計需要的資料內容如下表,所以我們在做Seeder的時候,不需要很大量的資料去做測試,所以我們用簡單的方式一筆一筆去新增,當然也可以自行到資料庫做手動新增。
id | name | level | create_at | update_at |
---|---|---|---|---|
1 | 一般會員 | 1 | ||
2 | 銅牌會員 | 3 | ||
3 | 銀牌會員 | 5 | ||
4 | 金牌會員 | 8 | ||
5 | 白金會員 | 10 |
DB::table('資料表')->insert()
,只能單筆單筆去做新增,所以我們要去做5次一樣的事情。
1 |
|
修改會員資料表的Factory填充值(假資料)
在會員資料表(members)增加了一個欄位,這個欄位為 category(會員權限),他會對應到會員類別資料表(member_categories)的 id
,所以我們要在我們之前所做的Factory 新增原料的部分。
range(1,5)
為PHP的函數,範圍值1到5,Arr::random
為Laravel提供的,對陣列做一個亂數的產生。
1 | 'category' => Arr::random(range(1,5)) |
將上面這段程式碼加入到 MemberFactory.php
的檔案。再產生每筆會員資料,會隨機給予一個權限。
專案 > database > factories > MemberFactory.php
1 |
|
設定Seeder執行點的檔案,加入會員類別的填充值
開啟DatabaseSeeder.php
的檔案,加入會員類別的Seeder,我們在下seeder的執行指令時統一管理才可以統一下指令新增假資料。專案 > database > seeds > DatabaseSeeder.php
加入以下程式碼。
1 | $this->call(MembersCategoryTableSeeder::class); |
結果如下
1 |
|
清除舊資料?新增新資料?
我們要先清除掉資料表的舊資料,再去新增資料。
1 | $ php artisan migrate:refresh |
在 DatabaseSeeder.php
有將需要的填充值做一個新增,所以我們只要執行以下指令,就可以將兩個資料表的資料都做新增。
1 | $ php artisan db:seed |
1 | Seeding: MembersTableSeeder |
回頭看一下資料表的資料是否確定新增進去
members
member_categories
結論
其實在做任何的專案,真的需要規劃好各種可能,活用各種方法等,才不會照成後續維護的困難。
標籤: w3HexSchool
PHP
Laravel
原文作者: Sian
原文鏈接: https://dew31794.github.io/2020/07/19/遇見 Laravel 的午後(Part 8、9)延伸篇/
版權聲明: 轉載請註明出處(必須保留作者署名及鏈接)