如何在Laravel中构建多级嵌套注释系统?

时间:2018-03-17 06:59:03

标签: laravel comments

我正在开发 Laravel Blog App ,我需要在照片中显示的博客文章下方添加多级嵌套评论。

enter image description here

以下是评论表的数据库迁移架构

 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表的屏幕截图:

enter image description here

我只能使用以下代码获得第一级回复:

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);
   }

以下是上述查询的回复:

enter image description here

正如你在reponse中看到的那样,我只在评论ID 7中得到2个回复,但是在数据库评论id 10到16是评论的回复....没有显示的回复...我想要获取和显示那个。

我在StackOverflow和Google上搜索了很多问题,但没有找到任何有用的资源。请帮我解决这个问题。

0 个答案:

没有答案