Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

在 Laravel 中,php artisan db:seed 命令預設就會依序執行所有的 seeder 檔案,但這個順序並不是根據檔名或建立時間自動確定的。
當您執行 php artisan db:seed 時,Laravel 會:
database/seeders/DatabaseSeeder.php 檔案。DatabaseSeeder.php 內部的 run() 方法。DatabaseSeeder.php 內部,您必須手動指定要依序執行的 Seeder 檔案。 Laravel 會按照您在 DatabaseSeeder 中呼叫它們的順序來執行。要依序執行所有 Seeder,需要在 database/seeders/DatabaseSeeder.php 檔案中,使用 $this->call() 方法來呼叫建立的其他 Seeder 類別,並且按照您希望的順序排列它們。
範例:database/seeders/DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// 1. 確保 'Roles' (角色) 資料先建立 (因為其他 Seeder 可能會用到)
$this->call(RoleSeeder::class);
// 2. 接著建立 'Users' (使用者) 資料
$this->call(UserSeeder::class);
// 3. 最後建立 'Posts' (文章) 資料
$this->call(PostSeeder::class);
// 可以在這裡加入更多 $this->call(),它們將會按照您排列的順序執行
}
}完成上述設定後,只需要執行:
php artisan db:seedLaravel 就會自動從 DatabaseSeeder 開始,並按照在 run() 方法中定義的順序 (RoleSeeder -> UserSeeder -> PostSeeder) 依序執行所有 Seeder。