Modificar tablas utilizando migraciones en Laravel

arrow_back Blog

Durante la vida de un proyecto son muchas las veces en las que debemos ajustar nuestra base de datos para añadir, quitar o cambiar columnas.

Antes de la primera puesta en producción no hay problema, podemos ajustar nuestra base de datos ya que no tendremos datos que mantener.

Una vez nuestra aplicación ha sido puesta en producción, todo se vuelve más complejo. En este tutorial te voy a enseñar cómo modificar tablas utilizando migraciones en Laravel, verás que es sencillo y cubre todo lo que podamos necesitar.

Añadir columnas a una tabla existente en Laravel

El primer caso es muy necesario en prácticamente todos los proyectos, tener la necesidad de añadir columnas a tablas existentes.

Para añadir una columna a una tabla existente en Laravel debemos hacer uso de migraciones, para ello, primero debes crear una nueva migración usando el comando make:migration.

El comando anterior habrá creado un nuevo archivo de migración en el directorio database/migrations de nuestro proyecto:

Al haber utilizado el flag --table=users al generar nuestra migración, Laravel sabe que queremos interactuar con nuestra tabla users y ha creado ese pequeño código en los métodos up y down con lo que necesitamos.

En este punto sólo nos queda ajustar los métodos up y down para añadir una nueva columna:

  • El método up añadirá la columna status de tipo varchar a la tabla users después de la columna email utilizando por defecto el valor active.

  • El método down eliminará la columna cuando hagamos un rollback.

Para que nuestra columna sea añadida en la tabla de usuarios, debemos ejecutar el siguiente comando en nuestro proyecto:

Si ahora revisas la tabla de usuarios verás que se ha actualizado añadiendo nuestra nueva columna.

Para deshacer este cambio, es decir, que nuestra columna status fuese eliminada de la tabla users, deberíamos hacer un rollback de la siguiente forma:

El comando anterior habrá eliminado la columna status de la tabla users, pero ten cuidado, si lo vuelves a ejecutar, eliminará todo lo que se había creado la última vez que se ejecutó el comando php artisan migrate, y ya no será sólo nuestra nueva columna.

Modificar columnas en Laravel usando migraciones

Para modificar una columna existente en una tabla en Laravel usando migraciones, primero debemos crear una nueva migración usando el comando make:migration.

Laravel ofrece el método change() para modificar una columna existente, pero esté método viene de Doctrine y antes de utilizarlo debemos instalar una nueva dependencia en nuestro proyecto:

Una vez tenemos doctrine/dbal instalado en nuestro proyecto Laravel, podemos modificar la columna status haciendo que su longitud sea de 20, en lugar de 255 que es el valor por defecto en MySQL:

  • El método up cambia la longitud a 20.

  • El método down volverá a dejar la longitud en 255.

Eliminar columnas en Laravel usando migraciones

El proceso para eliminar columnas utilizando migraciones en Laravel es el mismo, primero debemos crear una nueva migración usando el comando make:migration.

Una vez tenemos nuestra migración, debemos definir los método up y down, veamos:

  • El método up elimina la columna status.

  • El método down vuelve a crear la columna status, es súper importante que la columna quede en el último estado que tenía.


Espero que esta entrada te haya enseñado a modificar tablas utilizando migraciones en Laravel.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2023 © Todos los derechos reservados.

Contacto