laravel eloquent nested comment and replies(laravel eloquent 嵌套评论和回复)
问题描述
几天前,我看到一个网站,用户可以在其中评论帖子.其他用户可以回复.并且重播可以有像下面的示例截图一样的回复..
Few days ago, I saw a website where users can comment on a post. Other users can reply on that. and a replay can have replies like the example screenshot below..
所以我想试一试,但不知何故无法弄清楚.这是我的数据库设置
So I thought to give it a try but somehow couldnt figure it out. here is my database set up
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);
这完美地返回了评论和回复.但是如果有reply的回复,就不会显示了.我怎样才能做到这一点?需要建议.
this perfectly returns the comment and replies. But if there is a reply of reply, it doesnt show up. How can I do that? Need suggestion.
推荐答案
将 reply_id 与 nullable() parent_id 交换.所以基本上你想知道评论是否有父级.
Swap reply_id with a nullable() parent_id. So basically you want to know if a comment has a parent.
然后在Comment模型中,添加一个self关系来获取所有parent_id匹配的评论.
Then in Comment model, add a self relationship to take all comments whose parent_id match.
public function replies() {
return $this->hasMany('AppComment', 'parent_id');
}
在您的视图中,您可以为每个评论及其回复嵌套循环
In your view you can have nested loops for each comments and its replies
@foreach($comments as $comment)
{{ $comment->content }}
@if ( $comment->replies )
@foreach($comment->replies as $rep1)
{{ $rep1->content }}
...
@endforeach
@endif
@endforeach
这篇关于laravel eloquent 嵌套评论和回复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:laravel eloquent 嵌套评论和回复
基础教程推荐
- PHP 类:全局变量作为类中的属性 2021-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- 如何替换eregi() 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
