Generate realistic test data with model factories and Faker for seeding development databases.
Seeders and Factories
// Factory
class UserFactory extends Factory {
public function definition(): array {
return [
"name" => fake()->name(),
"email" => fake()->unique()->safeEmail(),
"password" => bcrypt("password"),
];
}
public function admin(): static {
return $this->state(["role" => "admin"]);
}
}
// Seeder
class DatabaseSeeder extends Seeder {
public function run(): void {
User::factory(10)->create();
User::factory()->admin()->create(["email" => "admin@example.com"]);
Post::factory(50)->recycle(User::all())->create();
}
}
php artisan db:seed
php artisan db:seed --class=UserSeeder