# Database Seeders
# Table of Contents
Phenix seeders are classes that enable developers to populate database tables with predefined or sample data. They are particularly useful for initializing databases with test data during development or for seeding default data into tables upon application installation. This feature helps maintain a consistent database state, simplifies testing, and streamlines the process of setting up database environments for various application scenarios. The seeders are stored in the database/seeders folder.
# Writing Seeders
To create a seeder, use the following command:
php phenix make:seeder UsersSeeder
A seeder class only has one run method, which is called when the seed:run command is executed.
<?php
declare(strict_types=1);
use Phenix\Database\Seed;
class UsersSeeder extends Seed
{
public function run(): void
{
// ..
}
}
# Running Seeders
To seed your database, use the Phenix seed:run command:
php phenix seed:run
You can specify a particular seeder to be executed using the --seed option, short for -s:
php phenix seed:run -s UsersSeeder
php phenix seed:run --seeder=UsersSeeder
# Table Method
The table method receives the name of the table to be seeded as an argument. The insert method receives a collection of records, and finally, the saveData method saves the data.
public function run(): void
{
$users = $this->table("users");
$users->insert([
[
'name' => 'Rasmus Ledford',
'email' => 'rasmus.ledford@php.net',
],
[
'name' => 'Nikita Popov',
'email' => 'nikita.popov@php.net',
],
])->saveData();
}
# Faking Data
To facilitate the generation of fake data, you can use Faker (opens new window) in the seeders:
public function run(): void
{
$users = $this->table("users");
$users->insert([
[
'name' => $this->faker->name,
'email' => $this->faker->freeEmail,
],
])->saveData();
}