Migraciones, Factories y Seeders: El Control de Versiones de tu Base de Datos

Inicio   /   Migraciones, Factories y Seeders: El Control de Versiones de tu Base de Datos

Blog Migraciones, Factories y Seeders: El Control de Versiones de tu Base de Datos


Migraciones, Factories y Seeders: El Control de Versiones de tu Base de Datos


No vuelvas a compartir un archivo .sql por WhatsApp. Domina el flujo profesional de datos en Laravel.


Uno de los mayores problemas en el desarrollo colaborativo es mantener la base de datos sincronizada entre todos los miembros del equipo. Laravel soluciona esto eliminando la necesidad de exportar e importar SQL manualmente, permitiéndote definir la estructura y los datos de prueba directamente en el código.

1. Migraciones: El ADN de tus tablas

Las migraciones son como un historial de cambios para tu base de datos. En lugar de crear tablas en phpMyAdmin, escribes una clase PHP que describe la tabla.

Creando una Migración

Usa Artisan para generar el archivo:

php artisan make:migration create_products_table

Definiendo la estructura

Dentro del archivo generado en database/migrations, definimos las columnas. Laravel ofrece métodos fluidos para cada tipo de dato:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
    public function up(): void {
        Schema::create('products', function (Blueprint $table) {
            $table->id(); // Primary Key auto-incremental
            $table->string('name', 100); // VARCHAR(100)
            $table->text('description')->nullable(); // TEXT que acepta nulos
            $table->decimal('price', 8, 2); // DECIMAL(8,2)
            $table->foreignId('category_id')->constrained(); // Relación automática
            $table->timestamps(); // Crea created_at y updated_at
        });
    }

    public function down(): void {
        Schema::dropIfExists('products');
    }
};

Para aplicar estos cambios, solo ejecutas: php artisan migrate. Si te equivocas, puedes deshacer el último paso con php artisan migrate:rollback.

2. Model Factories: Plantillas de datos inteligentes

¿Necesitas 500 productos para probar la paginación? No los crees a mano. Los Factories utilizan la librería Faker para generar datos realistas (nombres, correos, textos, etc.).

Definición del Factory (database/factories/ProductFactory.php):

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;

class ProductFactory extends Factory {
    public function definition(): array {
        return [
            'name' => $this->faker->words(3, true),
            'description' => $this->faker->sentence(),
            'price' => $this->faker->randomFloat(2, 10, 500),
            'category_id' => \App\Models\Category::factory(), // Crea una categoría automáticamente
        ];
    }
}

3. Seeders: Sembrando la base de datos

El Seeder es el encargado de ejecutar los Factories o insertar datos maestros (como los roles de administrador o las categorías iniciales).

Uso en database/seeders/DatabaseSeeder.php:

public function run(): void {
    // Crear 10 categorías y para cada una, crear 5 productos
    \App\Models\Category::factory(10)
        ->hasProducts(5)
        ->create();

    // Crear un usuario específico para pruebas
    \App\Models\User::factory()->create([
        'name' => 'Admin Test',
        'email' => 'admin@example.com',
    ]);
}

4. El Comando Maestro

Cuando un compañero descarga tu proyecto, solo tiene que ejecutar un comando para tener la base de datos lista, con tablas y datos de prueba:

php artisan migrate:fresh --seed

Este comando borra todas las tablas, las crea de nuevo y ejecuta los seeders. ¡Cuidado en producción!

Tip de Oro: Usa siempre Migraciones Anónimas (las que vienen por defecto en versiones recientes de Laravel) para evitar conflictos de nombres de clases si tienes muchas migraciones similares.

Dominar este flujo te ahorrará horas de configuración manual. ¿Qué sigue? En la próxima entrada exploraremos los Controladores y Request Validation para asegurar que los datos que entran a tu sistema sean perfectos.


Tags: aprender, Laravel, php, sql, datos, migraciones

Ultimas Noticias


7 mejores prácticas para un excelente servicio al cliente en las redes sociales

Construir una excelente relación con su


5 Errores Comunes que Están Arruinando Tu Sitio Web y Cómo Solucionarlos

¿Tienes un sitio web pero no estás obt


Porque debes adaptar tu web a dispositivos moviles

El sitio web optimizado para dispositivo


Qué es una landing page en ecommerce

Las primeras impresiones son importantes


8 tipos de paginas web que puedes crear

Se estima que hay más de 1.700 millones


Implementando el patrón de fábrica en una aplicación Laravel

Los patrones de diseño en el desarrollo