【问题标题】:Threaded Comments, php, laravel线程评论,php,laravel
【发布时间】:2016-12-02 21:49:02
【问题描述】:

这是我的桌子 NewTheme_Comment:

    id
    parent_id
    id_theme
    user
    text
    upVotes
    downVotes

这是我的控制器:

class Comments extends Controller {

public function GenerateComments($id){
    $Comments = NewTheme_Comment::where('id_theme',  $id)->paginate(5);
    return view('comments', ['Comments'=>$Comments]);
}

Id是一般帖子的链接(每个帖子都有不同的cmets部分),所以在用户点击时,用户会被动态重定向到cmets的('cmets view')部分因此。

所以我有一个数组Comments,其中填充了NewTheme_Comment 表中的值,对我来说,问题在于如何使用这些值来创建一个Threaded Comments 部分。

在我看来是这样(问题是这使得评论部分就像每个 parent_id 都等于 0 一样,这不是我要寻找的:

 @foreach ($Comments as $Comment) {{-- Comments threads --}}

<div class="media">
  <div class="media-left">
  </div>
  <div class="media-body">
    <p class="media-heading">{{ $Comment->text }}</p>
    <p class="media-heading">{{ $Comment->user }} / {{ $Comment->created_at }} </p>
  </div>
</div>


@endforeach {{-- Comments threads --}}

最终结果:

0 
1
2
3
2
1
1
0
1
0

我的想法是让 cmets 像(带有 parent_id):

   0
     1
      2
       3
      2
     1
     1
   0
     1
   0

但是我找不到正确的方法来逻辑地做这件事,所以最终看起来像一个简单的线程评论部分,与 reddit 使用的相同(用于我的小 Web 应用程序)。

如果我的方法不好,我将非常感谢其他更好的方法来解决这个问题。

【问题讨论】:

  • 您可以按 parent_id 对它们进行分组,然后它们的结构会正确,因此您可以嵌套输出。
  • 如何按 parent_id 对它们进行分组,例如 (0,1,1,1,2,2,2,2 / 0,1,1,2,2,2) 第一个分支和第二个评论树之一(2 个单线程评论)?

标签: php laravel


【解决方案1】:

这是一个多步骤的解决方案。您应该更喜欢使用 lazychaser/laravel-nestedset 包,因为线程注释是嵌套集的一种形式。

反之,如果您想继续当前的方法,将在您的Comment 模型中使用child 函数,如下所示

public function children(){
   return $this->hasMany('App\Models\Comment', 'parent_id'); //Change as per your application architecture
}

然后在视图中,您可以通过递归调用部分视图来检查给定节点的子节点,包含

//print the details of $Comment
@foreach($Comment->children as $childComment)
   //call this partial view again for $childComment & print the details
@endforeach

【讨论】:

    【解决方案2】:

    列出所有没有 parent_id 的评论,然后在加载 cmets 时检查这些 cmets 中是否有任何子 cmets 并列出带有缩进的评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2012-05-09
      相关资源
      最近更新 更多