GlosarioBase de datos

¿Qué es Factory?

Las Factories en Laravel son clases que definen plantillas para generar instancias de modelos Eloquent con datos falsos realistas usando la libreria Faker, ideales para testing y seeding.

Factories

Las factories definen como generar datos de prueba para tus modelos Eloquent. Utilizan la libreria Faker para producir datos realistas y variados automaticamente.

Definir una factory

php artisan make:factory PostFactory
class PostFactory extends Factory
{
    public function definition(): array
    {
        return [
            'user_id' => User::factory(),
            'title' => fake()->sentence(),
            'slug' => fake()->slug(),
            'body' => fake()->paragraphs(3, true),
            'published' => fake()->boolean(80),
            'published_at' => fake()->dateTimeBetween('-1 year'),
        ];
    }

    public function draft(): static
    {
        return $this->state(fn (array $attributes) => [
            'published' => false,
            'published_at' => null,
        ]);
    }
}

Usar factories

// Crear una instancia sin persistir
$post = Post::factory()->make();

// Crear y persistir en BD
$post = Post::factory()->create();

// Crear multiples registros
$posts = Post::factory(10)->create();

// Usar estados personalizados
$draft = Post::factory()->draft()->create();

// Con relaciones
$user = User::factory()
    ->has(Post::factory()->count(5))
    ->create();

Las factories son imprescindibles para escribir tests eficientes y para poblar la base de datos con datos de desarrollo mediante seeders.