Estamos avanzando con Laravel y hasta ahora tenemos una buena comprensión del enrutamiento, las vistas y también hemos configurado nuestro entorno con una conexión de base de datos . También incluimos phpMyAdmin como una interfaz gráfica para la base de datos para que trabajar manualmente con tablas y datos sea fácil. Recuerde que en nuestro tutorial de paso de datos a vistas , simplemente codificamos los datos en el cierre de nuestro archivo de rutas. Lo llevaremos aún más lejos en este episodio y trabajaremos con datos dinámicos de una base de datos.


Crear una tabla de base de datos

Continuaremos en este camino de trabajar con videojuegos para nuestros ejemplos. Ya configuramos la base de datos, pero aún no tenemos una tabla para almacenar la información sobre nuestros juegos. Vamos a necesitar uno, así que usemos Artisan para crear una tabla para nosotros y lo haremos creando una migración. Entonces sabemos que queremos crear una migración, por lo tanto, aprendamos un poco más al escribir php artisan help make: migration en la terminal. De las instrucciones de ayuda que vemos, proporcionemos un nombre para la migración , así como un nombre para la tabla que queremos crear. Al nombrar la migración, la convención es describir qué hace la migración usando guiones bajos. Queremos crear una mesa de juegos para que nuestro nombre de la migración seacreate_games_tableTambién especificamos una opción de –create para que también podamos proporcionar el nombre de la tabla que queremos crear. La mesa va a contener muchos juegos, así que gamesla nombramos en plural. Entonces especificamos el nombre de la tabla como este fragmento aquí --create="games"Poniendo todo esto junto, el comando completo para crear nuestra migración es el siguiente:

php artisan make: migration create_games_table –create = "juegos"

laravel crea migración con un nombre de tabla

Después de ejecutar nuestro comando, tenemos una nueva migración.
las migraciones tienen su propia carpeta

Cuando abrimos el archivo, tiene el siguiente código para ayudarnos a comenzar.

En este punto, necesitamos editar el archivo nosotros mismos para que coincida con los datos que estamos intentando retener. De forma predeterminada, la tabla ya tiene una columna de identificación y una columna de marcas de tiempo . Casi todas las tablas usarán estos dos, así que los dejamos en su lugar. Lo que todavía no tenemos son las columnas específicas para el título de un juego, el editor de un juego y la fecha de lanzamiento de un juego. Es en la up()función donde podemos definir las columnas de la base de datos, así que hagámoslo ahora.


Migrar la base de datos

Hemos creado la migración, o esquema, para la nueva tabla de base de datos que queremos crear. Sin embargo, todavía no existe en la base de datos. Esto se debe a que necesitamos completar un proceso de dos pasos. El primer paso es crear el archivo de migración . El segundo paso es ejecutar las migraciones para que el código del archivo se ejecute y cree la tabla de la base de datos para nosotros. Hacemos esto escribiendo php artisan migrate.
php migrar artesanal

Ahora podemos verificar que la tabla existe, tanto a través de la consola como de la interfaz gráfica de usuario.
viendo la nueva mesa de juegos
nueva mesa de juegos en phpmyadmin


Agregar datos a la tabla de la base de datos

Primero colocaremos algunos datos en la base de datos manualmente. Podemos insertar algunos juegos como ese.
insertar datos en la base de datos con phpmyadmin

Una vez que insertamos algunos de estos juegos, simplemente navegamos por la tabla para ver nuestros datos.
enumerar registros en la base de datos con phpmyadmin

¡Muy genial! Ahora tenemos Mega Man 2 , Metroid y Tecmo Bowl como datos de muestra con los que trabajar. Así que comencemos a cocinar con Laravel Query Builder para tener acceso a estos datos.


He aquí la clase DB

Ahora actualizaremos nuestro archivo de rutas para que haga una llamada a la base de datos y obtenga los registros de la tabla que acabamos de crear. Así es como podemos lograr ese objetivo.


Cómo examinar el contenido de la colección

El código anterior en realidad almacena una Colección Laravel en la $gamesvariable. Para entender cómo procesar esa colección, primero debemos inspeccionarla. Esto se puede hacer de varias formas.


Muere y descarga la salida

colección dd laravel


Renderizar como JSON

colección laravel renderizada como json


Pasó a la vista y luego atravesó print_r

rutas / web.php

recursos / vistas / games.blade.php

inspeccionando la colección con print_r

Excelente. Podemos ver que $gameses una instancia de u objeto de la clase Illuminate \ Support \ Collection. El objeto de la colección contiene una matriz. Esta matriz contiene uno o más objetos de tipo stdClassEntonces, una colección es una matriz de objetos. Al observar una de las formas de inspeccionar esta colección que acabamos de demostrar, podemos descubrir cómo acceder a los valores individuales de la colección.


Consigue el título del tercer juego


Obtén el editor del primer juego


Obtén la fecha de lanzamiento del segundo juego.


Representación de la colección

Con nuestra comprensión de cómo inspeccionar y llegar a los elementos de datos individuales en una colección, ahora podemos crear una vista adecuada para representar todos nuestros juegos en la base de datos.


rutas / web.php


recursos / vistas / games.blade.php

colección representada en una tabla html


Aplicar una cláusula where

Por lo general, no solo obtiene todos los registros de una base de datos. Es probable que necesite un subconjunto de los datos disponibles. Aquí aplicamos una cláusula where usando el generador de consultas para buscar solo el registro donde el título es Metroid .

generador de consultas cláusula where

El generador de consultas de Laravel es ridículamente poderoso. Prácticamente cualquier tipo de consulta que pueda realizar en MySql, puede hacerlo con el generador de consultas. Además, simplemente puede usar consultas sin procesar si necesita ser súper granular.


Agregar una vista para registros individuales

Cuando a un usuario se le presenta una lista de recursos en un sitio web, generalmente puede hacer clic en cualquier elemento para profundizar y encontrar más información al respecto. Lo configuraremos ahora con nuestros juegos. Vamos a necesitar modificar nuestra primera ruta, modificar nuestro archivo de vista original, agregar una segunda ruta y también agregar un segundo archivo de vista para lograr esto. También crearemos un nuevo directorio en nuestra carpeta de vistas. Se llamará juegos y contendrá todas las vistas que tengan que ver con mostrar datos sobre juegos.


rutas / web.php

Este es nuestro archivo de rutas actualizado. Hay algunas cosas a tener en cuenta. En la /gamesruta, observe que el generador de consultas está utilizando un latest()método. Esto busca todos los juegos y los ordena por el último agregado a la base de datos. Esa es una pequeña característica agradable. A continuación, observe el primer argumento de la view()función. Se especifica como games.indexLo que esto significa es que Laravel debería buscar en una carpeta de juegos contenida dentro de la carpeta de vistas para encontrar el index.blade.phparchivo.

Pasando a nuestra nueva ruta de /games/{id}, encontramos una nueva sintaxis aquí. La {id}parte de la ruta es un operador comodín para que se pueda pasar una identificación a la consulta a través de la URL que se utiliza en el navegador. Nuestro cierre de ruta luego captura esa identificación y la usa con la find()función para obtener un registro en particular. Además, la view()función en esta ruta ha games.showpasado como primer argumento. Nuevamente, esto significa que Laravel buscará en la carpeta de juegos ubicada en la carpeta de vistas un archivo llamado show.blade.phpCreemos esos nuevos archivos de vista ahora.


recursos / vistas / juegos / index.blade.php


recursos / vistas / juegos / show.blade.php

¡Vea los frutos de nuestro trabajo!
laravel en acción


Cómo utilizar el resumen del generador de consultas de Laravel

El generador de consultas en Laravel es muy poderoso y le permitirá construir casi cualquier tipo de consulta que necesite en una aplicación. Proporciona una implementación fluida de comandos, por lo que puede encadenar la lógica en declaraciones únicas. Utiliza el enlace de parámetros PDO para garantizar que todas las consultas a la base de datos estén a salvo de ataques. En este tutorial, comenzamos creando una mesa para contener los juegos con los que estaríamos trabajando. Hicimos esto creando un nuevo archivo de migración con Artisan y luego ejecutando esa migración para crear la nueva tabla. A partir de ahí, usamos phpMyAdmin para insertar algunos datos manualmente en nuestra tabla de juegos, de modo que pudiéramos probar algunas consultas básicas con el generador de consultas. Vimos que las consultas con múltiples resultados crean una colección. Una colección en Laravel es un tipo especial de construcción que contiene una matriz de objetos. Para trabajar con esos resultados, analizamos detenidamente tres formas diferentes de examinar el contenido de una colección. A continuación se abordó la replicación de nuestra página web que mostraba una tabla de juegos y sus propiedades asociadas. Finalmente, comenzamos a examinar cómo dividir los archivos de vista en un directorio común dentro de la carpeta de vistas para que pudiéramos tener una vista para mostrar todos los registros y otra para usar para profundizar en un solo registro.