Contenido del curso

Pregunta con respuestas dinámicas en Laravel

Resumen

Mostrar una pregunta con su listado de respuestas en Laravel implica conectar la vista con la base de datos y aprovechar las relaciones entre modelos. Aquí aprendes cómo pasar de contenido estático a información dinámica usando Blade, relaciones Eloquent y el sistema de plantillas, todo dentro de un proyecto tipo foro.

¿Cómo se estructura la vista de una pregunta con sus respuestas?

La idea es que al hacer clic en una pregunta, se vea toda su información: título, autor, categoría, fecha y la lista de respuestas. Para lograrlo, partimos de una plantilla ya documentada y la pegamos dentro del archivo de la vista de la pregunta.

Una vez pegada, ajustamos el diseño y agregamos detalles visuales, como un corazón usando una entidad HTML para reforzar la interfaz. Después, reemplazamos los textos estáticos por datos reales que vienen del controlador.

Los campos que conectamos directamente con la base de datos son:

  • El título de la pregunta.
  • El usuario que la creó, accediendo a la relación con el modelo User.
  • La categoría, que se obtiene desde la relación con Category y muestra su nombre.
  • La fecha de creación, formateada con un método de Carbon para mostrar cuánto tiempo ha pasado.

¿Qué es Blade en Laravel? Es el motor de plantillas que permite mezclar HTML con sintaxis especial para mostrar datos dinámicos, ejecutar bucles y condicionales sin escribir PHP plano.

¿Cómo recorrer las respuestas de una pregunta con foreach?

Después del bloque de la pregunta viene el listado de respuestas. Aquí entra en juego un foreach de Blade que recorre la colección de respuestas asociadas a esa pregunta.

Dentro del bucle reemplazamos el contenido estático por las propiedades reales de cada respuesta. Lo importante es cerrar el foreach correctamente y mantener el plural en la variable que se itera, porque representa varios elementos.

Los datos que mostramos por cada respuesta son:

  1. El contenido de la respuesta.
  2. El nombre del usuario que la escribió.
  3. La fecha en que fue creada, también con formato relativo.

¿Por qué falla al mostrar el usuario de la respuesta?

Al intentar acceder al usuario desde la respuesta, el sistema falla porque la relación todavía no está declarada en el modelo. Una respuesta pertenece a un usuario, y esa relación se define en el modelo Answer con el método correspondiente que retorna un belongsTo hacia User.

Una vez registrada la relación, la información se conecta y cada respuesta muestra el nombre de quien la creó. Este flujo se repite a propósito para interiorizar cómo funcionan las relaciones en Eloquent mientras avanzas en el proyecto.

¿Qué hace belongsTo en Eloquent? Define una relación inversa: indica que un modelo pertenece a otro. En este caso, una respuesta pertenece a un usuario, así puedes acceder a sus datos desde la respuesta.

¿Cómo se comporta el contenido cuando es realmente dinámico?

Con todo conectado, puedes navegar desde el home hacia distintas preguntas y ver cómo cambia cada bloque sin tocar el HTML. Una pregunta puede tener tres respuestas, otra solo una, y otra ninguna. La vista responde a lo que existe en la base de datos.

Esto demuestra el valor de trabajar con relaciones bien definidas y un motor de plantillas como Blade: la interfaz se vuelve un reflejo fiel de los datos, sin duplicar código ni escribir condicionales innecesarios.

Replica estos mismos cambios en la sección de preguntas y en la sección del blog para mantener la coherencia. ¿Ya identificaste qué relaciones necesitas declarar en tus modelos? Comparte tu avance en los comentarios.