【发布时间】:2021-12-22 08:05:19
【问题描述】:
我已经在文章中添加了 cmets,这里是所有字段
Schema::create('article_comments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('article_id');
$table->foreign('article_id')
->references('id')->on('articles')->onDelete('cascade');
$table->string('name');
$table->string('email');
$table->text('text');
$table->string('date');
$table->unsignedBigInteger('comment_id')->nullable();
$table->foreign('comment_id')
->references('id')->on('article_comments')->onDelete('set null');
$table->timestamps();
});
我有 2 个 cmets 块,一个是常规的,另一个是它的答案。它们之间的唯一区别是不同的类
这就是我把它们带出来的方式
普通评论
<div class="comment-list">
@foreach($article_comments as $article_comment)
<div class="comment-list__item">
<div class="item-card">
<div class="item-card__header">
<div class="item-card__title">
<div class="label">
{!! $article_comment->name !!}
</div>
<div class="data">
{!! date('d F Y', strtotime($article_comment->date)) !!}
</div>
</div>
</div>
<div class="item-card__content">
{!! $article_comment->text !!}
</div>
</div>
</div>
@endforeach
</div>
给他的回复
<div class="comment-sub-list">
<div class="comment-sub-list__item">
<div class="item-card">
<div class="item-card__header">
<div class="item-card__title">
<div class="label">
{!! $article_comment->name !!}
</div>
<div class="data">
{!! date('d F Y', strtotime($article_comment->date)) !!}
</div>
</div>
</div>
<div class="item-card__content">
{!! $article_comment->text !!}
</div>
</div>
</div>
</div>
如果comment_id字段填写,那么这将是这个ID的评论的答案,但我无法实现它
我正在尝试对 comment_id 字段的存在进行类型检查并显示此评论
$articleCommentsReply = $article_comments->where('comment_id', $article_comment->comment_id)
->whereNotNull('comment_id')
->first();
但最后这条评论显示了两次,其中一个就是它的答案
【问题讨论】:
-
在
articleCommentsReply中找到记录,在查询末尾添加->get()或->first():$article_comments->where('comment_id', $article_comment->comment_id)->first(); -
@Miladpegah 是的,它可以工作,但我想出的无论如何都不正确,它会找到并显示
comment_id = null所在的 cmets,但只有在有值的情况下才需要 -
已添加答案。希望它能解决您遇到的问题。