我正在尝试创建帖子< - >注释关系表并显示结果。
我认为我可以正确地创建所有关系,但是我错过了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
当然,对于这种类型的观点,我可以显示回复的第一个回复,但不能更深入...
有关如何构建此视图并显示与回复一样深的任何想法吗?
感谢哥斯达黎加先进。
答案 0 :(得分:0)
这就是我要尝试的内容:
function display_comment($comment, $indent) {
echo $indent, $comment, PHP_EOL;
if ( $comment->nestedComment )
display_comment($comment->nestedComment, $indent + INDENT);
}
我还没有能够实现它