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.