Contenido del curso

Manos a la obra con nuestro proyecto

Migraciones en Laravel como control de versiones

Resumen

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.