如何显示属于post的评论?

How to show the comments which belongs to the post?

我正在创建一种类似新闻提要的东西,用户可以在其中 post 任何内容,post 也会发表评论。我能够创建新闻源和评论部分,但我真正的问题是我无法显示属于 post 的评论。现在所有评论都显示在每个新闻提要下。虽然我已经声明了提要和评论之间的 eloquent 关系,但我仍然无法在评论 table.

中保存 feed_id
This is my FeedsController:-
<?php namespace App\Http\Controllers;
use Request;
use Auth;
use Sentinel;
use App\Feed;
use App\Http\Requests;
use App\Blog;
use App\Http\Controllers\Controller;
use App\Comment;

class FeedsController extends Controller
{
public function index() {

  $comments = Comment::latest()->get();
  $feeds = Feed::where('user_id', Sentinel::getUser()->id)->latest()->get(); 
  $blogs = Blog::latest()->simplePaginate(5);
  $blogs->setPath('blog');
  return view('action.index')->with('feeds', $feeds)->with('comments', $comments)->with('blogs', $blogs);
}

public function store(Requests\CreateFeedRequest $request){
    $requet = $request->all();
    $request['user_id'] = Sentinel::getuser()->id;

  Feed::create($request->all());


  return redirect('home');
}

 public function storecomment(Requests\CommentRequest $request, Feed $feed)
 {

$comment = new Comment;
$comment->user_id =Sentinel::getuser()->id;
$comment->feed_id = $request->feed_id;
$comment->comment = $request->comment;
$comment->save();
  return redirect('home');
}  
}

这是型号: 评论模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
 protected $fillable = [
 'comment',
 'user_id',
 'feed_id'
 ];

 public function feed()
 {
    return $this->belongsTo('App\Feed');
 }

 public function user()
 {
    return $this->belongsTo('App\User');
 }
 }

供稿模型:

use Illuminate\Database\Eloquent\Model;

class Feed extends Model
{
 protected $fillable = [
 'feed_id',
 'user_id',
 'feed_content'
 ];

 public function user()
 {
    return $this->belongsTo('App\User');
 }

 public function comment()
 {
    return $this->hasMany('App\Comment');
 }
}

用户模型:-

<?php namespace App;
use Cartalyst\Sentinel\Users\EloquentUser;
use Illuminate\Database\Eloquent\SoftDeletes;


class User extends EloquentUser {


/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'users';

/**
 * The attributes to be fillable from the model.
 *
 * A dirty hack to allow fields to be fillable by calling empty fillable array
 *
 * @var array
 */
protected $fillable = [];
protected $guarded = ['id'];

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = ['password', 'remember_token'];

/**
* To allow soft deletes
*/
use SoftDeletes;

protected $dates = ['deleted_at'];



public function feeds() 
{
    return $this->hasMany('App\Feed');
}

public function comment()
 {
    return $this->hasMany('App\Comment');
 }
 }

这是我的feed.blade.php,我在其中显示提要输出和通信网络

@foreach($feeds as $feed)
<article class="media">
    <div class="well">
        <div class="pull-left"> 
            <img class="profile" src="{{ URL::to('/uploads/users/'.$feed->user->pic)  }}" class="img-responsive" alt="Image" style="width:48px;height:48px;padding-right : 10px;padding-bottom: 5px;">
         </div>
        <strong>{{ $feed->user->first_name }} 
                {{ $feed->user->last_name }}
                <small> posted </small>
         </strong>
                {{ $feed->created_at->diffForHumans() }}<br><hr>
                {{ $feed->feed_content }}

            <hr>
            {!! Form::open(['url' => 'home/{storecomment}']) !!}
                <div class="form-group">
                    {!! Form::text('comment', null, ['class'=>'form-control', 'rows'=>3, 'placeholder'=>"Comment"]) !!}
                </div>

                <div class="form-group feed_post_submit">
                    <a href="/home">{!! Form::submit('Comment', ['class' => 'btn btn-default btn-xs']) !!}</a>
                </div>
            {!! Form::close() !!}

            @foreach($comments as $comment)
                <div class="pull-left"> 
                    <img class="profile" src="{{ URL::to('/uploads/users/'. $comment->user->pic)  }}" class="img-responsive" alt="Image" style="width:48px;height:48px;padding-right : 10px;padding-bottom: 5px;">
                </div>
                {{ $comment->user->first_name }} 
                {{ $comment->created_at->diffForHumans() }}
                {{ $comment->comment }}<hr>
            @endforeach
    </div>
</article>
@endforeach

谁能告诉我如何将 feed_id 存储到评论 table 中并根据提要显示评论。谢谢你。我正在使用 Laravel 5.1

基于我们冗长的会议 -

要保存 feed_id(这是我们未来关系的外键),您需要在 POST 请求中 set/send feed_id。 Laravel 不是魔术,不会自动知道这一点。你可以通过添加一个隐藏的输入来做到这一点,像这样:

<input type="hidden" name="feed_id" value="{{ $feed->feed_id }}" />

在您的 FeedController 中,将您的索引更改为:

public function index() {

  // $comments = Comment::latest()->get(); remove this
  // notice the "with" below. I'm eager loading in relations here
  $feeds = Feed::with('comments', 'user')->where('user_id', Sentinel::getUser()->id)->latest()->get(); 
  $blogs = Blog::latest()->simplePaginate(5);
  $blogs->setPath('blog');
  return view('action.index', compact('feeds', 'blogs'));
}

Feed 模型 应该具有正确的关系,如下所示:

class Feed extends Model
{
     protected $fillable = [
     'feed_id',
     'user_id',
     'feed_content'
     ];

     public function user()
     {
        return $this->belongsTo('App\User', 'id', 'user_id');
     }

     public function comments()
     {
        return $this->hasMany('App\Comment', 'feed_id', 'feed_id');
     }
}

评论模型应该有正确的关系,如下:

class Comment extends Model
{
     protected $fillable = [
     'comment',
     'user_id',
     'feed_id'
     ];

     public function feed()
     {
        return $this->belongsTo('App\Feed');
     }

     public function user()
     {
        return $this->hasOne('App\User', 'id', 'user_id');
     }
}

现在你应该可以运行你的foreach了。