Post Top Ad

Your Ad Spot

viernes, 4 de septiembre de 2020

¿Qué son las migraciones en Laravel?

 ¿Qué son las migraciones en Laravel?

Si está pensando para sí mismo, "¿Qué son las migraciones?", Este tutorial es para usted. Cuando hablamos de migraciones en el contexto de Laravel, nos referimos a una forma de alterar y actualizar la base de datos de forma estructurada. La base de datos más común para usar con PHP es MySQL y muchas veces, es bastante fácil crear sus tablas manualmente usando sentencias SQL. De esta manera, puede iniciar sesión en MySQL manualmente y ejecutar cualquiera de las diversas declaraciones del lenguaje de definición de datos para crear y diseñar bases de datos y tablas. En el caso de un sistema de gestión de contenido como WordPress, el sistema simplemente ejecuta un script y crea todas las tablas de una sola vez. Con un marco dedicado como Laravel, los desarrolladores crean aplicaciones altamente personalizadas desde cero, que requieren una forma flexible de construir la base de datos a lo largo del tiempo. Las migraciones proporcionan esto y funcionan como un control de versiones dedicado, que realiza un seguimiento de todos los cambios y actualizaciones de la base de datos a lo largo del tiempo.


Comenzando con una pizarra en blanco

Aquí tenemos una base de datos sin tablas todavía. Estamos usando la popular herramienta phpMyAdmin para ver la base de datos de forma gráfica.

todavía no hay mesas

Sería bastante fácil crear tablas aquí mismo en la interfaz gráfica de usuario. Sin embargo, un inconveniente es que perdemos esa característica de control de versiones que es parte de las migraciones. Además, con las aplicaciones personalizadas, las tablas de la base de datos pueden cambiar con el tiempo. De hecho, todo el esquema está sujeto a cambios, por eso necesitamos la flexibilidad de las migraciones. Laravel proporciona una buena implementación de migraciones que veremos ahora.


Migraciones integradas de Laravel

Laravel se envía con dos migraciones ya creadas para ti. Cada uno es un archivo PHP que hace uso de una clase PHP para crear una tabla de base de datos y sus campos o columnas asociados. Una migración crea una tabla de usuarios y la otra crea una tabla password_resets. Echemos un vistazo a ellos ahora.

create_users_table.php fuente

create_password_resets_table.php fuente


Excelente. ¿Qué hacen estos archivos?

Al inspeccionar los archivos de migración, podemos ver que cada uno tiene un método llamado up()down()up()siempre está asociado con la creación de nuevas tablas o campos en la base de datos. Por lo general, cada uno up()también tendrá un archivo down()El down()método está ahí para deshacer o revertir cualquier cosa up()que haga el método. Esto es con el propósito de poder tener una segunda oportunidad de crear el esquema de su base de datos. Si comete un error, puede revertir la migración, realizar las actualizaciones que necesite, como cambiar el nombre de una columna o algún otro detalle, y luego volver a ejecutar la migración.


Migrar la base de datos

Las migraciones de bases de datos deben ejecutarse para afectar realmente a la base de datos. Con la instalación predeterminada de Laravel, tenemos estos archivos de migración, pero aún no se han ejecutado. Sabemos esto porque cuando nos conectamos a la base de datos en cuestión con phpMyAdmin, de hecho teníamos una base de datos en blanco llamada homestead . Antes de intentar ejecutar archivos de migración, es importante asegurarse de tener las credenciales de su base de datos configuradas en el entorno de Laravel. Para este ejemplo estamos utilizando el valor por defecto de un homestead nombre de base de datos , homestead nombre de usuario y una contraseña de secretAdemás, la propia base de datos ya debe estar presente en MySQL, que en este caso es como homestead.

user @ localpc / c / homestead (master)
vagrant ssh
Bienvenido a Ubuntu 14.04.1 LTS (GNU / Linux 3.13.0-30-generic x86_64)

* Documentación: https://help.ubuntu.com/

Información del sistema a partir del lunes 2 de marzo de 2015 a las 15:20:21 UTC

Carga del sistema: 0.97 Procesos: 99
Uso de /: 5.0% de 39.34GB Usuarios conectados: 0
Uso de memoria: 33% Dirección IP para eth0: 10.0.2.15
Uso de intercambio: 0% Dirección IP para eth1: 192.168.33.10

Grafique estos datos y administre este sistema en:
https://landscape.canonical.com/

Obtenga soporte en la nube con Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

Último inicio de sesión: viernes 19 de diciembre 15:01:15 2014 de 10.0.2.2 vagrant
@ homestead: ~ $ cd Code
vagrant @ homestead: ~ / Code $ cd Laravel
vagrant @ homestead: ~ / Code / Laravel $ php artisan migrate
Tabla de migración creada correctamente.
Migrado: 2014_10_12_000000_create_users_table Migrado
: 2014_10_12_100000_create_password_resets_table vagrant
@ homestead: ~ / Code / Laravel $

En este fragmento de arriba, ahora hemos ejecutado las migraciones con el comando php artisan migrateInspeccionemos la base de datos ahora y veamos qué obtenemos.
tenemos mesas

¡Éxito! Como resultado de ejecutar realmente las migraciones, ahora tenemos tres tablas nuevas en nuestra base de datos de homestead. Por supuesto,ahora hemos creado las tablasusersypassword_resets, y también tenemos una tercera tabla demigrationsEsta tabla realiza un seguimiento de cuándo se ejecutan las migraciones y es lo que nos brinda el aspecto de control de versiones del uso de las migraciones. Echemos un vistazo a la estructura de lastablasusersypassword_resetsen forma de interfaz gráfica de usuario para ver cómo los archivos de migración PHP anteriores se traducen en tablas reales en la base de datos.

users Mesa

tabla de usuarios

password_resets Mesa

tabla password_resets

¡Fantástico! Podemos ver nuestras mesas en todo su esplendor aquí. Están vacíos en este momento, pero podemos ponerlos en uso de inmediato. Es posible que haya notado que Laravel se envía con un sistema de autenticación de usuario implementado. Simplemente visite la ruta / home y tendrá la oportunidad de registrarse como usuario.

Intentando iniciar sesión sin registrarse

todavía no hay usuarios

Registrar un nuevo usuario

registro de usuario

El usuario puede acceder a la aplicación

conectado

¡Muy agradable! Con este texto estándar que se nos proporciona, podemos ver cómo funciona un sistema de autenticación con Laravel. Ahora que hemos registrado un usuario y hemos iniciado sesión en la aplicación, podemos examinar la base de datos. Nuestras tablas y campos de base de datos que se crearon como resultado de ejecutar las migraciones anteriormente ahora deberían tener algunos datos dentro de ellos. Como podemos ver a continuación, de hecho tenemos una nueva entrada en la tabla de usuarios para el usuario que registramos.

tenemos datos

Migraciones con Laravel Artisan

La herramienta artesanal incorporada de Laravel tiene muchas formas de trabajar con migraciones. Con nuestras nuevas habilidades de canalización de Linux, averigüemos qué comandos están disponibles para nosotros.

vagabundo @ homestead: ~ / Código / Laravel $ php artisan | grep migration

Ahora que podemos ver los comandos disponibles para nosotros en relación con las migraciones, probemos algunos. El primero que parece interesante es migrar: estado, probémoslo.


vagabundo @ homestead: ~ / Código / Laravel $ php artisan migrate:status

Esto nos da un resumen de lo que hemos hecho con las migraciones hasta ahora en nuestra aplicación. Probemos con otro.

vagrant @ homestead: ~ / Code / Laravel $ php artisan migrate:rollback
Revertido: 2014_10_12_100000_create_password_resets_table
Revertido: 2014_10_12_000000_create_users_table vagrant
@ homestead: ~ / Code / Laravel $php artisan migrate:status

Acabamos de hacer una reversión de la última migración de la base de datos. Esto significa que lo que se hizo la última vez que ejecutamos php artisan migrate, ahora está deshecho. Bueno, la última vez que ejecutamos una migración, creamos dos tablas y varios campos asociados. Además de esto, registramos un usuario con la aplicación. Bueno, con esta reversión, esas tablas y cualquier dato en ellas ahora son historia. ¿Y si hubiéramos registrado a 100 usuarios con la aplicación hasta ahora? Esos usuarios también se perderán. La conclusión es saber por qué está haciendo una reversión antes de hacerlo. Ahora compruébalo. Esto nos da una buena oportunidad de mostrar el concepto de tener una segunda oportunidad en nuestro esquema de mesa. Imagina que también quieres que el usuario tenga un apodo asociado a su cuenta. Podemos modificar el archivo de migración y luego ejecutar las migraciones nuevamente.

Actualizar el archivo de migración

Ejecutar migraciones

vagrant @ homestead: ~ / Code / Laravel $ php artisan migrate
Migrado
: 2014_10_12_000000_create_users_table Migrado: 2014_10_12_100000_create_password_resets_table vagrant
@ homestead: ~ / Code / Laravel $php artisan migrate:status

Observar nuevo esquema

esquema actualizado


Crear nuevos archivos de migración

Al observar los fragmentos anteriores del PHP que realmente crea un archivo de migración, es posible que haya estado pensando, "Dios, eso es mucho código para escribir solo para crear una tabla de base de datos". No temas, ya que usaremos la generación automática de código mediante la herramienta artesanal para crear los archivos por nosotros. Imaginemos que queremos crear una tabla para guardar marcadores. Así es como podríamos hacer eso.

vagrant @ homestead: ~ / Code / Laravel $ php artisan make:migration create_bookmarks_table --create="bookmarks"
Migración creada: 2015_03_02_184309_create_bookmarks_table

Vale la pena discutir el formato de este comando. php artisan make: migration especifica que queremos crear un nuevo archivo de migración. La siguiente parte es el argumento del nombre . Este es un argumento obligatorio para el comando make: migration , y la convención es elegir un nombre que describa lo que hace este archivo de migración . En nuestro caso, estamos creando un archivo de migración que creará una tabla de marcadores. Por lo tanto, create_bookmarks_table es un buen nombre descriptivo de lo que hará esta migración. La siguiente opción de –create = ”marcadores” le indica a Laravel que estamos creando una tabla con el nombre de bookmarksVeamos lo que se nos ha generado.

create_bookmarks_table.php fuente

Excelente. Laravel nos ha proporcionado un buen texto estándar para que podamos comenzar. En el método up (), vemos que ya tenemos dos métodos para crear un campo de identificación de incremento automático y un campo de marcas de tiempo. En este punto, debemos agregar manualmente los campos que podríamos usar para guardar marcadores. Necesitaremos un campo para contener la URL, un título y una descripción. Agreguemos esos ahora.

create_bookmarks_table.php fuente

Con esa actualización, ejecutemos las migraciones y veamos qué obtenemos.


vagrant @ homestead: ~ / Code / Laravel $ php artisan migrate
Migrado: 2015_03_02_184309_create_bookmarks_table vagrant
@ homestead: ~ / Code / Laravel $php artisan migrate:status

nueva tabla de marcadores


Migraciones para tablas que no puede revertir

Lo último de lo que hablaremos en este episodio es cómo hacer ajustes en las tablas cuando ya no se puede revertir. ¿Cuándo podría pasar esto? Bueno, considere el ejemplo anterior donde revertimos la tabla de usuarios. Cuando hicimos eso, perdimos a todos los usuarios que estaban en la tabla. En nuestro caso, ese fue solo el usuario de ejemplo que habíamos registrado. Sin embargo, ¿qué pasaría si ya tuviéramos una aplicación en desarrollo y hubiera cientos o miles de registros de usuarios en esa tabla? Realmente no desea retroceder en ese punto, ya que todos los datos contenidos se pierden. En un caso como ese, puede crear un nuevo archivo de migración para la misma tabla. De esta manera, puede alterar una mesa sin arruinarla por completo primero.

vagrant @ homestead: ~ / Code / Laravel $ php artisan make:migration add_tags_to_bookmarks_table --table="bookmarks"
Migración creada: 2015_03_02_195049_add_tags_to_bookmarks_table

Hacemos el ajuste de agregar nuestra columna de etiquetas en el método up () y la capacidad de deshacer esta columna con dropColumn () en el método down (). Ahora podemos ejecutar la migración.

vagrant @ homestead: ~ / Code / Laravel $ php artisan migrate
Migrado: 2015_03_02_195049_add_tags_to_bookmarks_table vagrant
@ homestead: ~ / Code / Laravel $php artisan migrate:status

Como por arte de magia, ahora tenemos la nueva columna en nuestra base de datos.
alterar la mesa

¿Qué son las migraciones en Laravel? Conclusión

En este episodio, vimos bien qué son las migraciones en Laravel y por qué es beneficioso usarlas. Es cierto que, cuando se empieza a utilizar las migraciones, pueden parecer un trabajo adicional. Sin embargo, una vez que esté al día con ellos, realmente son una excelente manera de implementar el control de versiones para su base de datos y, de hecho, acelerarán su flujo de trabajo a largo plazo.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas