我最近为博客创建了评论系统。当博客中有一个帖子时,评论系统工作正常。但是,当博客上有两个帖子,并且我对FIRST帖子发表评论时,评论会显示在SECOND帖子上。类似地,如果我添加另一个帖子,那么我的博客中有三个帖子,当我评论第一篇帖子时,评论会显示在第三篇帖子下面。在同样的情况下,当我评论第二篇文章时,评论显示在第三篇文章下。这是我的代码:
/index.blade.php
@section('content')
<div class="col-md-8 col-md-offset-2">
<hr>
@foreach($posts as $post)
<h3>{{ $post->title}}</h3>
<p>by {{ $post->user->name }}</p>
<img src='{{ asset($post->image_path) }}' class="img-responsive" id="blogpic"/>
<p>{{ Str::words($post->body) }}</p>
<p><a href="{{ action('BlogController@show', $post->id) }}">Read More...</a></p>
<hr>
{{ Form::open(array('action' => 'CommentController@newComment')) }}
{{ Form::hidden('post_id', $post->id) }}
<div class="row">
<div class="col-md-10">
{{ Form::text('body', null, array('class'=>'form-control')) }}
</div>
<div class="col-md-2">
{{ Form::submit('Post', array('class'=>'btn btn-info')) }}
</div>
</div>
<br>
@foreach($post->comments as $comment)
<div class="comment">
<p><span class="bold">{{ $comment->user->name }}</span>: {{ $comment->body }}</p>
</div>
@endforeach
@endforeach
</div>
@stop
这是我的新评论控制器:
public function newComment()
{
$comment = New Comment();
$comment->user_id = Auth::user()->id;
$comment->post_id = $post_id = Input::get('post_id');
$comment->body = Input::get('body');
Post::find($post_id)->comments()->save($comment);
return Redirect::action('BlogController@index');
}
我很确定问题出在我的索引文件中,如果需要,我可以提供更多代码。我的评论似乎只是获得了此行中最新的ID
{{ Form::hidden('post_id', $post->id) }}
可能出现什么问题?
提前致谢