Giao diện
Seeding
Giới thiệu (Introduction)
Laravel bao gồm khả năng seed (gieo hạt) database của bạn với dữ liệu test bằng seed classes. Tất cả seed classes nằm trong database/seeders. Mặc định, DatabaseSeeder class được định nghĩa sẵn — từ class này bạn gọi các seeders khác.
Viết Seeders (Writing Seeders)
bash
php artisan make:seeder UserSeederphp
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class UserSeeder extends Seeder
{
public function run(): void
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10) . '@example.com',
'password' => Hash::make('password'),
]);
}
}Sử dụng Model Factories
Tạo data lượng lớn:
php
use App\Models\User;
public function run(): void
{
User::factory()
->count(50)
->hasPosts(1)
->create();
}Gọi Seeders khác
php
public function run(): void
{
$this->call([
UserSeeder::class,
PostSeeder::class,
CommentSeeder::class,
]);
}Tắt Model Events
php
use App\Models\User;
public function run(): void
{
User::withoutEvents(function () {
User::factory()->count(50)->create();
});
}Chạy Seeders (Running Seeders)
bash
# Chạy DatabaseSeeder (mặc định)
php artisan db:seed
# Chạy seeder cụ thể
php artisan db:seed --class=UserSeeder
# Fresh migrate + seed
php artisan migrate:fresh --seed
# Force seed trong production
php artisan db:seed --forceKết hợp với migration:
bash
php artisan migrate --seed
php artisan migrate:refresh --seed