Agregar columnas a una tabla en producción en Laravel

Por su puesto, lo ideal es diseñar las bases de datos basado en todos los requerimientos. Pero en algunas ocasiones los requerimientos llegan después.

Para agregar columnas a una tabla ya creada, procederemos a crear una migración o varias migraciones.

Advertencia

Cada migración al ser ejecutada ya no se puede modificar. Podemos agregar mas columnas al archivo «migrate», pero no podemos ejecutarlo con artisan. Y por supuesto, en producción no podemos simplemente ejecutar:

php artisan migrate:fresh

Este comando resetea toda la base de datos y crea las tablas vacias.

Crear migración de actualización

php artisan make:migration add_column_to_name_table --table=name

En este comando, prestemos atención a lo que debemos colocar. En add_column_to_name_table, column: será el nombre de la columna o migración y name: será el nombre de la tabla.

Si por ejemplo, la nueva columna se llamará «telefono» en la tabla «clientes», el comando sería como este:

php artisan make:migration add_telefono_to_clientes_table --table=clientes

Una vez creado esta migración, veremos los métodos up() y down(). up() será para agregar la migración y down() cuando se ejecute un rollback.

public function up()
    {
        Schema::table('clientes', function (Blueprint $table) {
        
            $table->string("telefono");
        });
    }

Una vez terminado, vamos a ejecutar la migración «php artisan migrate», lo cual agregará la columna a la tabla.

Finalmente solo necesitas implementar el método down() por si quieres hacer un rollback.

$table->dropColumn(‘nombre_columna’);

public function down()
    {
        Schema::table('clientes', function (Blueprint $table) {
            $table->dropColumn(‘telefono’);
        });
    }


Publicado

en

, , ,

Comentarios

2 respuestas

  1. Avatar de Jesús
    Jesús

    Faltaría implementar el método down() por si quieres hacer un rollback.

    $table->dropColumn(‘nombre_columns’);

    1. Avatar de unFuturista

      Es verdad. Gracias por tu comentario, lo agregaré.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *