Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

485
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!