iT邦幫忙

第 11 屆 iThome 鐵人賽

1
Software Development

在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映系列 第 36

✾後花園D36✾- 來播種吧! ( seeder 填充資料 )

本系列文的環境狀態,可點擊此連結後花園環境參考

建立 seeder

輸入指令,建立 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,
        ]);
        */
    }
}

讓種子 run 起來

生成 Composer 自動加載器
Terminal 輸入指令

$ composer dump-autoload

使用 artisan 指令,將鍵入資料的種子,播種到資料庫內。
有兩種方式,擇一使用即可:

方式一、預設 db:seed 命令運行 DatabaseSeeder class

$ php artisan db:seed

方式二、使用 --class 選項,指定要單獨運行的特定 seeder class

$ php artisan db:seed --class=FlowersTableSeeder

來看看種入資料庫的資料狀況吧~

注意到 created_atupdated_at 列位 ,屬於 timestamps ,如果要有資料顯示,也是需要另外再填充的,例:填入 Carbon::now() 。

參考連結:
❁ Laravel 官方 - Database: Seeding
❁ Charleen 大 - Laravel新手基礎訓-Database: Seeding 埋下資料種子
❁ How to seed timestamps field?
❁ Laravel 學習筆記(15) - 資料庫之 Query Builder


上一篇
✾後花園D35✾- tinker 異常跳出
下一篇
✾後花園D37✾-也許忠貞的 1 對 1 關係? Part 1(Eloquent: Relationships )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2019-11-10 02:43:25

https://ithelp.ithome.com.tw/upload/images/20191110/201195469F6r8PWef3.jpg

/images/emoticon/emoticon71.gif

我就愛吃種子,而且偏愛南部粽~XD

我要留言

立即登入留言