Las migraciones en Laravel son archivos PHP que definen y versionan la estructura de tu base de datos sin tocarla directamente. Aprenderás a crearlas, ejecutarlas y entender por qué funcionan como un control de versiones para proyectos colaborativos en backend con PHP.
Qué es una migración en Laravel y por qué usarla
Una migración es un archivo que describe el esquema de una tabla y guarda un registro detallado de cada cambio que haces en tu base de datos. En lugar de modificar columnas desde un cliente como phpMyAdmin, escribes el cambio en código PHP y Laravel lo aplica por ti [01:00].
Piensa en este enfoque como un version control aplicado a tu base de datos. Cada archivo de migración incluye en su nombre la fecha y hora de creación, así que puedes rastrear qué se creó, cuándo y en qué orden.
¿Para qué sirve una migración en Laravel? Sirve para definir tablas, columnas e índices desde código PHP. Así mantienes un historial de cambios y replicas la misma estructura en cualquier entorno sin exportar archivos SQL.
Cómo conectar Laravel con tu base de datos
Antes de migrar necesitas una base de datos vacía y la conexión configurada. Desde tu cliente MySQL, conéctate con tu usuario y contraseña, y crea una base de datos nueva, por ejemplo proyecto [02:10].
Luego abre el archivo .env, que es donde Laravel lee la configuración de entorno. En la sección de base de datos define estos valores:
DB_DATABASE: el nombre de la base, en este caso proyecto.
DB_USERNAME: tu usuario de MySQL.
DB_PASSWORD: tu contraseña, por ejemplo root.
DB_HOST: puede ser localhost o la dirección IP local.
Con esto Laravel ya sabe a dónde apuntar cuando ejecutes los comandos de Artisan.
Cómo ejecutar las migraciones por defecto con PHP Artisan
Artisan es la consola de comandos de Laravel y migrate es el comando que convierte tus archivos en tablas reales. Abre la terminal en la raíz del proyecto y ejecuta:
bash
php artisan migrate
Laravel se conecta usando el .env, recorre las migraciones por defecto, e imprime mensajes como Migrating y Migrated para cada tabla, incluida la de usuarios [03:25]. Si revisas tu cliente y actualizas, verás la tabla users con campos como nombre, email y contraseña, exactamente como están descritos en el archivo de migración.
Cómo crear tu primera migración para una tabla Post
Para generar una migración nueva usa el comando make:migration. La convención de nombres importa: el nombre debe empezar con create_ y terminar con _table para que Laravel cree el archivo con el esquema base ya escrito [05:10].
bash
php artisan make:migration create_posts_table
Si escribes el comando sin esa convención, Laravel genera el archivo pero los métodos up y down aparecen vacíos, sin la estructura inicial de Schema::create. Por eso conviene seguir el patrón.
Cómo definir columnas con Schema y Blueprint
Dentro del método up Laravel te entrega una variable $table (instancia de Blueprint) con la que defines cada columna. Para la tabla de publicaciones agrega:
$table->string('title'); para el título.
$table->string('slug')->unique(); para la URL amigable, marcada como única.
$table->text('body'); para el contenido del post.
El método id() crea automáticamente la clave primaria y timestamps() añade los campos created_at y updated_at. Por eso, al revisar la tabla en el cliente, aparecen seis columnas aunque tú solo escribiste tres.
¿Qué hacen los métodos up y down en una migración? El método up aplica el cambio, como crear una tabla o columna. El método down revierte ese cambio. Juntos permiten avanzar y retroceder de versión.
Cómo funciona el control de versiones al volver a migrar
Cuando ejecutas php artisan migrate por segunda vez, Laravel revisa qué migraciones ya corrieron y solo aplica las nuevas. En el ejemplo, al agregar la tabla posts, la consola informa que únicamente migrará esa tabla porque las anteriores ya están registradas [07:40].
Este comportamiento es lo que convierte a las migraciones en una herramienta poderosa para trabajo en equipo. Si compartes tu proyecto con otra persona, no necesitas exportar archivos .sql ni mover esquemas a mano.
¿Cómo replico la base de datos al compartir un proyecto Laravel? Tu compañero clona el repositorio, configura su .env y ejecuta php artisan migrate. Laravel reconstruye toda la estructura desde los archivos PHP, idéntica a la tuya.
Buenas prácticas al trabajar con migraciones
Para mantener tu flujo limpio, recuerda estos puntos clave que se desprenden de la clase:
- Crea siempre la base de datos vacía antes de migrar.
- Modifica el esquema desde los archivos de migración, nunca desde el cliente MySQL.
- Usa la convención
create_nombre_table al generar archivos nuevos.
- Aprovecha modificadores como
unique() para reglas a nivel de columna.
- Confía en
id() y timestamps() para columnas estándar.
Ahora te toca a ti: crea tu primera migración para una tabla diferente y cuéntame en los comentarios qué columnas elegiste y qué tipo de datos usaste.