En un proyecto en específico tuve la necesidad de modificar el tipo de dato en una base de datos que se encontraba en producción y analizando las opciones que había eran poco fiables.

El día de hoy te compartiré un tip que ayudará a que actualices tipos de datos o modifiques información de una columna como se debe.

¿Por qué no editarlo directo en MySQL?

Al hacerlo directamente en la base de datos perderás todo el poder de Laravel, ya que este framework ofrece tener un historial de todas las modificaciones a la base de datos por medio de las migraciones.

Será muy poco profesional ya que si en un futuro necesitas montar un servidor de pruebas o replicarlo en otro servidor, no tendrás todos los ajustes y tendrás que literal copiar y pegar la base de datos.

Instalación

Para lograr modificar una base de datos en producción en Laravel tendremos que utilizar doctrine/dbal y la podremos instalar ejecutando el siguiente comando en nuestro proyecto:

composer require doctrine/dbal

Esto instalará todas las dependencias necesarias en nuestro proyecto.

¿Qué es doctrine/dbal?

Es una librería que permite abstraer diferentes funcionalidades para gestionar bases de datos, está pensada para PHP y eso permite que haya métodos disponibles sin la necesidad de construir código.

Es importante que sepas que Laravel por defecto ya tiene soporte para esta librería, por ende no tendrás que preocuparte de instalar o configurar cosas extras.

Puedes leer más información sobre la librería en: doctrine/dbal

¿Cómo actualizar una base de datos en producción?

No actualices las migraciones que ya creaste anteriormente, para todas las nuevas actualizaciones tendrás que crear una migración nueva.

Actualizar el tamaño de una columna

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

Actualizar una columna para que sea nullable

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->nullable()->change();
});

Cambiar el nombre de una columna

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('nombre_actual', 'nombre_nuevo');
});

Eliminar una columna

Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('email');
});

Cambiar el tipo de dato de una columna

Schema::table('dogs', function (Blueprint $table) {
    $table->string('status')->change();
});

De esta manera podrás actualizar tu base de datos en un entorno de producción de forma en que te permita seguir con buenas prácticas de desarrollo.

Si te ha gustado este artículo deja tu comentario, like o compartelo, me ayudarás a seguir trayendo contenido de calidad al blog.

Obtén beneficios exclusivos

Suscríbete al boletín y obtén beneficios exclusivos directo en tu correo.

Gracias por suscribirte...

Algo salió mal...