Post Top Ad

Your Ad Spot

martes, 15 de septiembre de 2020

Agregar reseñas de juegos con relaciones elocuentes

 


Sigamos construyendo nuestra sencilla aplicación de juegos con Laravel. En este tutorial haremos algunas cosas, además de agregar la capacidad de agregar una revisión para cualquier juego dado. Sin embargo, en primer lugar, tendremos que limpiar la vista principal de la lista de juegos para que se vea un poco mejor. Eso también puede incluir ajustar un poco la página de diseño maestro. Nos tomaremos un momento para discutir cómo funcionan las relaciones en Laravel, crear un nuevo modelo y una migración, actualizar nuestros modelos y luego probar cosas. Empecemos.


Limpiando la vista index.blade.php

Actualmente, cuando buscamos todos los recursos, o juegos en este caso, solo estamos mostrando el título de los juegos en una lista desordenada. Actualicemos ese archivo de vista para que sea un poco más agradable de ver. Usaremos un simple marcado de tarjeta de arranque para lograr esto.


recursos / vistas / juegos / index.blade.php

Resulta que, si está utilizando el componente de la barra de navegación en Bootstrap, a veces necesita agregar manualmente algo de relleno a su elemento contenedor para dar algo de espacio para respirar en el diseño. Podemos actualizar el archivo de plantilla maestra para lograr esto así.


recursos / vistas / diseños / master.blade.php

Con estos dos sencillos ajustes, nuestra página principal de juegos se ve un poco mejor.
enumerar todos los juegos se ve bien


Un juego tiene muchas () reseñas

Ahora comenzamos a ver cómo trabajar con relaciones en Eloquent. Específicamente, existen relaciones entre modelos. Hemos estado trabajando mucho con los videojuegos, y lo que tienen la mayoría de los videojuegos en línea. ¡Sí, Reseñas! A la gente le encanta jugar a los juegos más recientes, o tal vez a algunos de los retro, como lo que ofrece el Nintendo Classic, y luego ofrece sus reseñas. Vamos a implementar esto mismo en nuestra pequeña aplicación de juegos. Hasta ahora tenemos un modelo de juego que representa los juegos en nuestro sistema. Bueno, ahora queremos trabajar con revisiones, entonces, ¿cuál será el modelo? Así es, vamos a necesitar un modelo de revisión . De acuerdo, creemos un modelo y una migración de una sola vez usando artisan.
php artisan make model Review m

Este comando creó un nuevo modelo de revisión para nosotros, así como una nueva migración. Abramos ese archivo de migración y agreguemos un par de campos para contener nuestros datos de revisión. Vamos a agregar un bodycampo de tipo cadena, y este es simplemente el campo que contendrá el texto de una reseña. Dado que ahora también vamos a trabajar con relaciones entre modelos, vamos a agregar un game_idcampo a esta tabla de la base de datos de revisiones.


base de datos / migraciones / xxxx_xx_xxxxxx_create robust_table.php

Con nuestro archivo de migración actualizado para la nueva tabla de revisiones que nos gustaría agregar, ahora podemos migrar la base de datos con php artisan migrate .
tabla de revisiones de php artisan migrate


Actualización de nuestros modelos de relaciones

tiene muchos()

Ahora tenemos un modelo de juego y un modelo de revisión . ¿Cómo se relacionan estos dos entre sí? Un juego puede tener una o más reseñas. Así que necesitamos actualizar nuestro modelo de juego para reflejar esto. En Laravel, usamos el método hasMany () en nuestro modelo para hacer esto. Puesto que un juego puede tener muchas críticas, que nombrar el plural método en el modelo del juego de esta manera: reviews().


aplicación / Game.php

Todavía tenemos el pequeño alcance de consulta interesante del que hablamos en un tutorial anterior, y podemos dejarlo en su lugar. Simplemente agregamos nuestra relación justo arriba en el método reviews () . Hay una convención en funcionamiento aquí. Se lee como, "Este juego tiene muchas críticas".


pertenece a()

Con nuestro modelo de juego actualizado para reflejar que cualquier juego puede tener muchas revisiones, ahora necesitamos actualizar o revisar el modelo. Una revisión determinada siempre será para un juego específico. En otras palabras, una reseña pertenecerá a un juego. Para representar eso en nuestro modelo, Laravel proporciona el método paymentsTo () . De nuevo hay una convención en juego. Podemos leer esta relación como, "Esta revisión pertenece a un juego específico". Entonces, es por eso que vemos que en el escenario pertenece a, el nombre de nuestro método es singular: juego () . Veamos cómo implementar eso aquí.


app / Review.php


Agregar una reseña del juego a la base de datos

Necesitamos agregar una revisión a la base de datos antes de que podamos probar la lógica de nuestra relación. Usando phpMyAdmin que habíamos instalado al configurar una base de datos para el tutorial de Laravel, podemos agregar una revisión como esta.
insertar una nueva reseña en la base de datos


Probando la relación en Tinker

Si saltamos a Tinker en la línea de comandos, ahora podemos probar las relaciones de nuestro modelo. Primero, usemos nuestro modelo de Juego y busquemos el juego con una identificación de 1. Hacemos esto como con el comando, $ juego = App \ Juego :: find (1); Esto almacenará una instancia de ese juego en nuestra $gamevariable. Desde ahí, podemos llamar al método reviews () como una propiedad, como en $ game-> reviews . Esto le dice a Laravel que cargue ansiosamente la relación. Probémoslo.
llamar al método de relación como una propiedad

¡Increíble! Esto nos dice que nuestra relación hasMany está funcionando muy bien. ¿Qué pasa con la relación Pertenece a? Podemos probar eso también. En este caso de nuestra relación pertenece a, habíamos definido un método game (). Entonces, esto significa que podemos encontrar una revisión en particular en la base de datos, y luego nuevamente, llamar a ese método game () como una propiedad para cargar ansiosamente la relación. Encontraremos una revisión en la base de datos con $review = App\Review::first();y luego averiguaremos a qué juego pertenece esta revisión$review->game;
pertenece a la relación en acción


Mostrar reseñas en show.blade.php

En segundo plano, hemos agregado algunas revisiones más a la base de datos para cada juego. Ahora actualice nuestro archivo de vista para que cuando hagamos clic en un registro o juego específico, también podamos ver las revisiones asociadas sobre el juego.


recursos / vistas / juegos / show.blade.php

¡Echale un vistazo!
reseñas de juegos vía elocuente

Los métodos de relación son muy convenientes y facilitan el trabajo con modelos relacionados. Si tenemos una instancia de un Juego, podemos obtener fácilmente todas las reseñas asociadas con $ game-> reviews; Por el contrario, si tenemos una instancia de una Revisión, podemos ver fácilmente a qué juego pertenece con $ review-> game; Muy agradable.


Agregar un formulario para agregar reseñas de juegos

Ahora que tenemos todo funcionando en términos de buscar modelos relacionados en nuestra base de datos y luego mostrárselos al usuario, sigamos adelante y agreguemos un formulario a nuestra vista show.blade.php para que podamos agregar una nueva revisión para un juego si nos gusta y no tenemos que insertar datos manualmente con phpMyAdmin. En primer lugar, vamos a necesitar ese formulario, así que aquí hay un fragmento para conseguirlo.


recursos / vistas / juegos / show.blade.php


Crear un controlador de reseñas para procesar reseñas

Necesitaremos una forma de almacenar las reseñas en nuestra base de datos. Tiene sentido poner esta lógica en un controlador dedicado, así que creemos ese nuevo controlador y agreguemos un store()método que almacenará nuevas revisiones para nosotros.
controlador de creación artesanal php


aplicación / Http / Controllers / ReviewsController.php


Agregar una ruta al archivo de rutas

Con la configuración de ReviewsController junto con nuestro nuevo store()método, también necesitaremos que el archivo de rutas se actualice. Podemos agregar una nueva ruta así:


Actualizar el modelo de revisión para la asignación masiva

Tenga en cuenta que en ReviewsController estamos haciendo uso del método Eloquent create () en nuestro modelo. Cuando este es el caso, Laravel buscará violaciones de asignaciones masivas. Necesitamos actualizar nuestro modelo de revisión de esa manera para hacer uso de este enfoque para insertar datos.


Intente agregar una reseña

Podemos intentar agregar una reseña ahora a un juego determinado. ¡Echale un vistazo!
agregar trabajos de revisión del juego


Agregar validación para revisar envíos

Vimos anteriormente que ahora todo funciona muy bien, pero no hay validación para cuando un usuario envía una reseña de un juego. Deberíamos agregar eso. Además, ¿recuerdas cómo extrajimos nuestro marcado de errores de visualización a un parcial? Esto es muy beneficioso para nosotros ahora, porque cuando actualizamos el formulario para agregar revisiones, todo lo que tenemos que hacer es incluir ese parcial que se ocupa de los errores de formulario para mostrar cualquier falla de validación. Primero, actualice el método store () en ReviewsController.


aplicación / Http / Controllers / ReviewsController.php

Esto dice que el campo del cuerpo debe completarse y también debe tener al menos 3 caracteres. Incluyamos ahora el parcial en nuestro formulario de revisión de adición así.

Podemos intentar agregar una reseña que tenga menos de 3 caracteres, y ahora que nuestro método store () y nuestra vista están actualizados para su validación, recibimos un mensaje de error que nos informa qué salió mal.
fallas de validación al agregar revisión


Controlador de revisiones de Refactor

Lo último que podemos ver es hacer una pequeña cantidad de refactorización en ReviewsController. La refactorización es el proceso de cambiar cómo se escribe el código, dejando la misma funcionalidad en su lugar. El resultado final es el mismo, pero la persona que lee el código lo ve de manera diferente. Hacemos esto en un intento de hacer que nuestro código sea más legible y más fácil de entender. Sería bueno si en nuestro método store (), pudiéramos hacer un ajuste en el código a algo como $ game-> addReview (request ('body')); Resulta que eso es algo que podemos hacer. Solo necesitamos hacer una pequeña actualización a nuestro Modelo de juego y ReviewsController. Necesitamos agregar un nuevo método al modelo de juego de addReview () y necesitamos actualizar el método store () en nuestro ReviwsController para hacer uso de ese nuevo método.


aplicación / Game.php

Con la adición del método addReview () anterior, ahora podemos llamarlo en nuestro ReviewsController muy fácilmente. Echale un vistazo.

¡Guauu! Mire lo bien que se lee ahora ese método de tienda. Tenemos una instancia de un juego y le agregamos una reseña. Bastante agradable. ¿Funciona? ¡Veamos!
insertar después de refactorizar


Agregar reseñas de juegos con resumen de relaciones elocuentes

Nuestra pequeña aplicación de juegos realmente ha tomado forma en este momento. En este tutorial limpiamos nuestros diseños y luego pasamos a usar Eloquent Relationships para agregar reseñas a nuestros juegos. Agregamos un nuevo modelo de Revisión para complementar nuestro modelo de Juego existente y configuramos las relaciones pertenece a () y tieneMuchas () en estos modelos. Discutimos que un juego puede tener una o más reseñas, pero una reseña solo debe pertenecer a un juego. A partir de ahí, agregamos algunas reseñas manualmente a la base de datos y probamos su recuperación con Tinker. Luego agregamos un nuevo formulario en la página que muestra un juego individual para que podamos agregar una revisión. Una vez que hicimos que todo funcionara a la perfección, terminamos con una pequeña sesión de refactorización para que nuestro ReviewsController sea muy conciso y fácil de leer.



No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas