Crear migraciones de bases de datos en Laravel 5.8

Crear migraciones de bases de datos en Laravel 5.8

Hace un par de años estaba frente a proyectos grandes que requerían versionar hasta el más simple pensamiento, todo es importante cuando estamos escalando y la base de datos no es la excepción, de hecho se ha convertido en casi un trauma para mí. Es fundamental contar con una muy buena base de datos, ordenada, estructurada y bastante decente, para mí es como la hija quinceañera consentida de la casa a la que hay que proteger siempre.

En aquel momento no sabía como podía tener un control de versiones de todo aquello que le íbamos adicionando al esquema de la base de datos, así que al momento de ir creciendo a veces era un problema saber para qué teníamos campos fantasma y tablas con nombres ambiguos por ahí regados, realmente era un dolor de cabeza.

Luego conocí las migraciones y mi vida cambió, en verdad, porque las migraciones son un simple archivo (fichero, documento, script, código o como lo quieras llamar) que creas con ayuda de Artisan y escribes lo que vas a agregar o modificar en tu base de datos.

Vamos a hacer esto en 3 simples pasos: generar, escribir y ejecutar tus migraciones en Laravel 5.8:

Abre una consola de comandos y ubícate en tu proyecto al cual le quieres escribir las migraciones.

Generando la migración:

Ya en la consola vamos a escribir este comando desde la raíz del proyecto:

Mi tabla se va a llamar "users" entonces por eso especifico create_users_table

Ya puedes buscar en database/migrations/ tu migración, el nombre del archivo estará antecedido por unos números, no te preocupes, son parte del "versionado" y se agregan automáticamente y luego el nombre que escribiste al crearla.

Escribiendo el contenido:

La estructura que se genera es una simple clase php de toda la vida:

Hay 2 funciones aquí: up y down.

En up() vamos a escribir lo que se va a ejecutar de primera mano y en down lo que se ejecutará en caso de rollback de nuestras migraciones en algún momento.

Escribamos up():

En este caso vamos a crear una nueva tabla, así que usamos esta estructura donde "users" es el nombre que va a quedar en la base de datos y dentro agregaremos cada columna que tendrá nuestra tabla.

Esto se traduce en que tendremos:

  • Un campo tipo bigIncrements que será nuestro 'id' de la tabla y será autoincremental.
  • Un campo tipo string llamado 'name'.
  • Otro campo tipo string llamado 'address'.
  • Y tendremos nuestros clásicos 'created_at' y 'updated_at' que se generarán automáticamente sólo especificando que queremos timestamps.

Ahora escribamos down():

Aquí lo único que estamos diciendo es que en caso de un rollback o un retroceso de cambios, elimine la tabla 'users' , ten en cuenta que esto eliminará también todo su contenido.

Ejecutando nuestra creación:

Ya podemos guardar nuestros cambios y es el momento de ejecutar la migración y lo podemos hacer de 2 formas:

a. Si queremos ejecutar todas las migraciones que tenemos en nuestro proyecto (que estén en database/migrations) sólo bastará escribir en la consola:

Este comando ejecutará todas las migraciones de nuestro proyecto

b. Si queremos ejecutar una migración específica, debemos decirle la ruta de esta manera:

Este comando ejecutará únicamente la migración que se llame exactamente create_users_table.php por eso es importante que agregues el nombre completo del archivo, incluyendo los números que incluye el nombre normalmente y la extensión .php

La consola te mostrará un mensaje de éxito cuando se ha ejecutado tu migración y ya puedes ir a la base de datos a verificar que todo se creó tal cual cómo lo pediste.

Ahora tienes todo lo que pasa a tu base de datos en archivos y lo podrás unir al repositorio con tu proyecto y sabrás quién y cuándo creó cada cosa, puedes ejecutar las migraciones en el servidor de producción con estos mismos comandos y de manera controlada, así también sabrás cómo va creciendo tu esquema de base de datos de manera muy ordenada y clara antes de que pase algún desastre.

Con las migraciones también puedes:

  • Crear, modificar o eliminar tablas.
  • Crear, modificar o eliminar columnas [Tipos de datos que puedes asignar aquí].
  • Crear, modificar o eliminar índices.
  • Gestionar llaves foráneas.

Hay muchas mas opciones para necesidades específicas cuando vas a crear o ejecutar tus migraciones, sin embargo estos comandos son los que vas a usar más seguido y todo saldrá bien.

Puedes encontrar a nivel extendido todo lo demás que puedes hacer con tus migraciones en la Documentación Oficial de Laravel.