如何解决在 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 次,它将显示回复.. 但这当然不切实际,因为可以对评论进行无限回复。我希望你能理解我的意思,我非常不擅长解释。
非常感谢任何帮助:)
解决方法
创建两个刀片文件
comment-list.blade.php
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 举报,一经查实,本站将立刻删除。