如何在Laravel 4中实现递归搜索?

时间:2014-08-24 19:41:39

标签: recursion laravel

我正在尝试创建帖子< - >注释关系表并显示结果。

我认为我可以正确地创建所有关系,但是我错过了View中的递归函数来正确显示它们。这是我的代码:

我的帖子表是:

   id | subject | content |

我的评论表是:

id | content | post_id | parent_id

正如您所看到的,我将评论表与带有" post_id"的帖子相关联,并将评论表与de" parent_id"相关联。这些评论是他人的孩子。

现在,这些是我的模特。对于我有的帖子:

<?php
class Post extends Eloquent{
    public function comments(){//Me captura el primer bloque de replies
        return $this->hasMany('Comment')->where('parent_id',0);
    }
}
?>

和我的评论模型是:

<?php
class Comment extends Eloquent{
    public function posts(){
        return $this->belongsTo('Post');
    }
    public function nestedComment(){
        return $this->hasMany('Comment','parent_id');   
    }
}
?>

我认为这些关系应该足以创建视图(我不知道如何使用递归函数构建),到目前为止我有这个:

@if($posts)
    @foreach($posts as $post)                       {{-- for posts --}}
        <strong>{{$post->subject}}</strong><br />
        @foreach($post->comments as $comment)       {{-- for 1st reply --}}
            <p id="reply1">{{$comment->content}}</p>
            @if($comment->nestedComment->count() >0)  {{-- for reply reply --}}
                @foreach($comment->nestedComment as $nestedComment)
                    <p id="reply2">{{$nestedComment->content}}</p>
                @endforeach
            @endif
        @endforeach
    @endforeach
@else
@endif

当然,对于这种类型的观点,我可以显示回复的第一个回复,但不能更深入...

有关如何构建此视图并显示与回复一样深的任何想法吗?

感谢哥斯达黎加先进。

1 个答案:

答案 0 :(得分:0)

这就是我要尝试的内容:

function display_comment($comment, $indent) {

  echo $indent, $comment, PHP_EOL;

  if ( $comment->nestedComment )
    display_comment($comment->nestedComment, $indent + INDENT);

}  

我还没有能够实现它