連線設定其實也沒什麼好介紹的,改 env 這種事 sail 已經弄好了。
即便現在,用 composer create-project 還是有些步驟會忘記,我還寫過一篇筆記提醒自己 clone 別人的專案下來要下哪些指令。
總之我們只需要跑 sail artisan migrate
就可以了。跑完可以看看目前資料表的狀態 sail artisan migrate:status
。
跑完之後當然要來做點事情,但資料庫空空的怎麼辦?以下提供四種填充假資料的方法與使用情境:
1.DB CLI => 金牛座的你作風老派穩固,使用的是最熟悉的 db command 與 SQL 指令。
2.Tinker => 處女座的你行動力強,使用 Tinker 快速完成填充資料的目的。
3.Seeder => 摩羯座的你討厭重複,使用 Seeder 寫完一次就能一勞永逸。
4.DB GUI => 適合巨蟹座的你,圖象化的資料庫管理面版讓你有回到家的感覺。
星座跟形容詞都是我亂掰的,徵求星座專家幫我改改。
Laravel 8 artisan 提供了 db ,可以直接打 sail artisan db
進入 db。我是使用 mysql 資料庫,所以使用 mysql command。
show databases;
顯示資料庫
show tables;
顯示資料表
INSERT INTO users (name, email, password)
VALUES ('jt', 'jt@laravel.com', 'password');
插入一筆資料
Tinker 是 artisan 提供的 REPL,讓你用 Eloquent ORM 方式與資料庫互動。
$user = App\Models\User::create(['name'=>'jt','email'=>'jt@laravel.com','password'=>Hash::make('5566123')]);
插入一筆資料
sail artisan seed
沒事發生,因為我們要去把註解打開。
database/seeders 裡面預設有個 DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
\App\Models\User::factory(10)->create();
}
}
移除註解再來一次 sail artisan seed
資料庫就多了十筆資料。
而這些假資料的內容是定義在 database\factories\UserFactory.php
。
剛剛介紹的方法是 Model Factory。
Laravel 8 的 factory 變成一個類別,預設加入 model,打開 User Model 可以看到裡面有個 HasFactory。
這是我們剛剛 seed 填充十個定義在 factory 的資料的寫法:
User::factory(10)->create();
這是之前的寫法:
factory(User::class, 50)->create();
call method 可以在定義跑 seed 的順序,照理來說會寫在 DatabaseSeeder.php 為整個專案定義 seed 順序。
public function run()
{
$this->call([
\Database\Seeders\UserSeeder::class,
\Database\Seeders\PostSeeder::class
]);
}
sail artisan seed
是跑 DatabaseSeeder.php,如果有單獨執行某個 seed 的需要也可以為個別 class 寫 seed。sail artisan db:seed --class=PostSeeder
詳見手冊拉
https://laravel.com/docs/8.x/seeding
在 Factory 產假資料通常使用 faker 或 Laravel 的 Str helper。
Factory Class 在這次改版有不少變化,可以參考這篇
https://auth0.com/blog/whats-new-in-laravel-8/
我目前在 macOS 上使用的是 TablePlus
現在不是很想截圖
今天關心大家的健康,跟大家分享我的辦公室小物:
眼睛
按摩熱敷
環境
以下環境一律勸離
其他