我正在开发 Laravel Blog App ,我需要在照片中显示的博客文章下方添加多级嵌套评论。
以下是评论表的数据库迁移架构
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->unsigned();
$table->text('comment');
$table->integer('post_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->timestamps();
});
以下是评论模型类:
class Comment extends Model
{
protected $table='comments';
public $primaryKey='id';
protected $fillable = [
'parent_id',
'comment',
'post_id',
'user_id'
];
public function post(){
return $this->belongsTo('App\Model\Post');
}
public function user(){
return $this->belongsTo('App\Model\User');
}
public function replies() {
return $this->hasMany('App\Model\Comment', 'parent_id');
}
}
以下是comments
表的屏幕截图:
我只能使用以下代码获得第一级回复:
public function show($slug)
{
$post=Post::where(['slug'=>$slug])->with('user')->first();
$comments=Comment::where(['post_id'=>$post->id,'parent_id'=>0])->orderBy('created_at','asc')->with('replies')->get();
return response()->json($comments);
}
以下是上述查询的回复:
正如你在reponse中看到的那样,我只在评论ID 7中得到2个回复,但是在数据库评论id 10到16是评论的回复....没有显示的回复...我想要获取和显示那个。
我在StackOverflow和Google上搜索了很多问题,但没有找到任何有用的资源。请帮我解决这个问题。