本系列文的環境狀態,可點擊此連結後花園環境參考
輸入指令,建立 seeder ,採大駝峰式命名法
$ php artisan make:seeder FlowersTableSeeder
路徑:database/seeds/FlowersTableSeeder.php
seeder class 預設功能僅有 run
,執行 artisan
指令時,將執行此功能。
使用 insert([ Key => Value ])
方式新增要填充的資料到資料庫。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use Illuminate\Support\Str;
class FlowersTableSeeder extends Seeder
{
public function run()
{
DB::table('flowers')->insert([
[
'name'=> 'Datura',
'email'=> 'Datura@mail',
'password'=>12345678,
'created_at'=>Carbon::now(),
// 對應 timestamps 的 created_at 列位
'updated_at'=>Carbon::now(),
// 對應 timestamps 的 updated_at 列位
'api_token'=>Str::random(10),
],
[
'name'=> 'Pansy',
'email'=> 'Pansy@mail',
'password'=>88888888,
'created_at' =>Carbon::now(),
'updated_at'=>Carbon::now(),
'api_token'=>Str::random(10),
]
]);
}
}
路徑:database/seeds/DatabaseSeeder.php
在 DatabaseSeeder.php 檔案中:
使用 call 方式執行指令 $this->call(參照的 seeder 檔名稱::class);
。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{ // 單一種子呼叫
// $this->call(UsersTableSeeder::class);
$this->call(FlowersTableSeeder::class);
// 多顆種子呼叫
/*
$this->call([
FlowersTableSeeder::class,
GardenersTableSeeder::class,
TreesTableSeeder::class,
]);
*/
}
}
生成 Composer 自動加載器
Terminal 輸入指令
$ composer dump-autoload
使用 artisan 指令,將鍵入資料的種子,播種到資料庫內。
有兩種方式,擇一使用即可:
方式一、預設 db:seed 命令運行 DatabaseSeeder class
$ php artisan db:seed
方式二、使用 --class 選項,指定要單獨運行的特定 seeder class
$ php artisan db:seed --class=FlowersTableSeeder
來看看種入資料庫的資料狀況吧~
注意到 created_at
及updated_at
列位 ,屬於 timestamps ,如果要有資料顯示,也是需要另外再填充的,例:填入 Carbon::now() 。
參考連結:
❁ Laravel 官方 - Database: Seeding
❁ Charleen 大 - Laravel新手基礎訓-Database: Seeding 埋下資料種子
❁ How to seed timestamps field?
❁ Laravel 學習筆記(15) - 資料庫之 Query Builder