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...
Es necesario ejecutar este comando?
composer require doctrine/dbal
Para poder realizar las migraciones que se muestran o en si para que instalamos esa librería.
Los métodos que se muestran en las migraciones hacen uso de ella?
Hola Jhon, si es necesario instalar la librería doctrine/dbal, es un intermediario entre Laravel y tu base de datos, es decir, los métodos que presente en el artículo ya vienen en Laravel pero no funcionan si no tienes esa librería.