Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

483
Vistas
Bucle de comentarios anidados en Laravel 8.x

En Laravel 8.x, estoy tratando de crear un sistema de comentarios de blog que le permita responder a los comentarios. Si responde a un comentario, al comentario se le asigna un parent_id , que es el id del comentario al que está respondiendo. Actualmente, cuando hago un bucle de los comentarios con las respuestas, solo generará un bucle de respuesta de 1 profundidad como el siguiente ejemplo:

Ejemplo actual del problema:

Usuario1: Publicación aleatoria 1..
> Usuario2: Este texto es una respuesta al Usuario1 para la publicación 1
Usuario 6: Publicación aleatoria 2..
Usuario7: Publicación aleatoria 3..

Lo que estoy tratando de lograr:

Usuario1: Publicación aleatoria 1..
> Usuario2: Este texto es una respuesta al Usuario1 para la publicación 1
>> Usuario3: Este texto es una respuesta al Usuario2 para la publicación 1
>>> Usuario4: Este texto es una respuesta al Usuario3 para la publicación 1
>>> Usuario5: Este texto es una respuesta al Usuario3 para la publicación 1
Usuario 6: Publicación aleatoria 2..
Usuario7: Publicación aleatoria 3..

mi codigo actual

Modelo:
 class PostComment extends Model { use HasFactory; public function replies() { return $this->hasMany($this, 'parent_id'); } }

Espada:

 @foreach ($comments as $comment) <p> {{ $comment->user->name }} : {{ $comment->comment }} </p> @foreach ($comment->replies as $reply) <p> {{ $reply->user->name }} : {{ $reply->comment }} </p> @endforeach @endforeach

Ahora, si agrego @foreach ($comment->replies as $reply) 4 veces dentro del ciclo de comentarios, mostrará las respuestas... pero, por supuesto, esto no es práctico ya que puede haber respuestas ilimitadas a un comentario. Espero que puedas entender a lo que estoy tratando de llegar, soy terriblemente malo para explicar las cosas.

Cualquier ayuda es muy apreciada :)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

crear dos archivos blade

  1. comment-list.blade.php
  2. child-comment-list.blade.php

En el archivo comment-list.blade.php

 @if(count((array)$comments)) @foreach ($comments as $comment) <p> {{ $comment->user->name }} : {{ $comment->comment }} </p> @include('child-comment-list',['comments'=>$comment->replies]) @endforeach @endif

En el archivo child-comment-list.blade.php

 @if(count((array)$comments)) @foreach($comments as $comment) <p> {{ $comment->user->name }} : {{ $comment->comment }} </p> @if(count((array)$comment->replies)) @include('child-comment-list',['comments'=>$comment->replies]) @endif @endforeach

Así que en su archivo actual

 @include('comment-list',['comments'=>$comments]);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda