微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Laravel 8.x 问题的当前示例:我正在努力实现的目标:我当前的代码

如何解决在 Laravel 8.x 问题的当前示例:我正在努力实现的目标:我当前的代码

在 Laravel 8.x 中,我试图创建一个博客评论系统,允许您回复评论。如果回复评论评论会被分配一个 parent_id,这是他们正在回复评论id。目前,当我用回复循环评论时,它只会输出一个深度为 1 个循环的回复,如下例所示:

问题的当前示例:

用户 1:随机发布 1..
> 用户 2:此文本是用户 1 对帖子 1 的回复
用户 6:随机发布 2..
User7:随机发帖 3..

我正在努力实现的目标:

用户 1:随机发布 1..
> 用户 2:此文本是用户 1 对帖子 1 的回复
>> 用户 3:此文本是对用户 2 对帖子 1 的回复
>>> 用户 4:此文本是对用户 3 的帖子 1 的回复
>>> 用户 5:此文本是对用户 3 对帖子 1 的回复
用户 6:随机发布 2..
User7:随机发帖 3..

我当前的代码

模型:
class PostComment extends Model
{
    use HasFactory;

    public function replies()
    {
        return $this->hasMany($this,'parent_id');
    }
}

刀片:

@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

现在,如果我在评论循环中添加 @foreach ($comment->replies as $reply) 4 次,它将显示回复.. 但这当然不切实际,因为可以对评论进行无限回复。我希望你能理解我的意思,我非常不擅长解释。

非常感谢任何帮助:)

解决方法

创建两个刀片文件

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

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
    

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

所以在您当前的文件中

@include('comment-list',['comments'=>$comments]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。