laravel

Laravel Cómo agregar una columna a una tabla existente

Laravel Cómo agregar una columna a una tabla existente

Problema

Agregar nuevas columnas a sus migraciones de Laravel es algo común. Las aplicaciones están diseñadas para ser escalables, lo que significa que agregar nuevas funciones desarrolla aún más su aplicación.

Muy a menudo, los nuevos desarrolladores de Laravel necesitan ejecutar sus migraciones, pero no se aseguran de que las migraciones puedan retroceder y migrar varias veces sin romper nada.

Si bien ese no es nuestro enfoque, creo que era importante afirmar que antes de abordar nuestro problema.

El siguiente es un problema común que los nuevos desarrolladores de Laravel intentarán hacer cuando quieran agregar una nueva columna a una tabla existente.

Entonces en este punto ya hicieron algo como:

función pública arriba ()

Schema :: create ('organizaciones', función ($ tabla)
$ tabla-> incrementos ('id');
$ tabla-> cadena ('nombre') -> anulable ();
$ tabla-> texto ('acerca de') -> anulable ();
);

Esto creará una nueva tabla para ellos. Y para hacer esto limpio, también debe agregar la función hacia abajo y simplemente soltar toda la tabla en este caso. La función hacia abajo se ejecutará cuando desee revertir su migración.

Saltando a través de todo eso, el problema real aparece cuando olvidan una columna y quieren agregarla después para que creen un nuevo archivo de migración (clase) e intenten ejecutar algo como:

función pública arriba ()

Schema :: create ('organizaciones', función ($ tabla)
$ tabla-> entero ('tamaño') -> anulable ();
);

Esperan agregar un nuevo tamaño de columna a la tabla existente.

Ahora veamos qué pasa y cómo evitar que vuelva a suceder.

Solución

El principal problema aquí es lo que los nuevos desarrolladores a menudo tienden a perder al notar cuál es el nombre del método estático del esquema . Solo usa crear cuando inicialmente está creando su tabla. Si necesita actualizar más su tabla en cualquier momento, desea usar la tabla en su lugar.

Entonces, la función real arriba debería ser así:

función pública arriba ()

Schema :: table ('organizaciones', función ($ tabla)
$ tabla-> entero ('tamaño') -> anulable ();
);

Y la función hacia abajo sería así:

función pública abajo ()

Schema :: table ('organizaciones', función ($ tabla)
$ tabla-> dropColumn ('tamaño');
);

Mi sugerencia personal para usted es que después de crear su nuevo archivo de migración (alterando) haga lo siguiente:

Otro consejo

Esto será útil en una etapa posterior si desea automatizar su implementación y su secuencia de comandos necesita ejecutar una reversión.

Otro consejo que te puedo dar es que planifiques dónde quieres colocar tu columna. Con solo hacer esto, Laravel colocará su nueva columna al final, probablemente después de la columna updated_at. (La mayoría de las tablas tienen esto)

Desea utilizar un método después para que su código final se vea así:

función pública arriba ()

Schema :: table ('organizaciones', función ($ tabla)
$ tabla-> entero ('tamaño') -> después ('nombre') -> anulable ();
);

En este caso, Laravel colocará su nueva columna justo después de la columna de nombre para que se vea bien y esté mucho mejor organizada.

Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...
Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...
Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...