【发布时间】:2017-02-01 03:51:10
【问题描述】:
几天前,我看到一个用户可以对帖子发表评论的网站。其他用户可以对此进行回复。并且重播可以像下面的示例屏幕截图一样回复..
所以我想试一试,但不知何故无法弄清楚。 这是我的数据库设置
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('post_id');
$table->unsignedInteger('reply_id')->default(0);
$table->text('body');
$table->timestamps();
});
模型中的关系
class Comment extends Model
{
protected $fillable = [
'user_id',
'post_id',
'reply_id',
'body'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function post()
{
return $this->belongsTo(Post::class);
}
public function replies()
{
return $this->hasMany(Comment::class,'reply_id','id');
}
在控制器中
$comments = Comment::with('replies')->where('reply_id','=',0)->get(['id','reply_id','body']);
return response($comments);
这完美地返回了评论和回复。但是如果有回复的回复,它不会显示出来。我怎样才能做到这一点?需要建议。
【问题讨论】: