【发布时间】:2019-12-04 05:41:54
【问题描述】:
我有 cmets 和对这些 cmets 的回复,我想带来完整的关系。我想在调用回复时带上所有的评论关系。这有点令人困惑,所以让我证明我的意思是用实际数据。
这是模型
class ForumReply extends Model
{
protected $fillable = [
'user_id',
'bulletin_id',
'comment',
'anonymous'
];
public $timestamps = true;
public function discussionForum()
{
return $this->belongsTo(DiscussionForum::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function replies()
{
return $this->hasMany(ForumReply::class, 'parent_id');
}
}
这是控制器中的函数
public function show($id)
{
$forum = DiscussionForum::findOrFail($id)
->with('comments', 'user')->first();
$comment = ForumReply::with('discussionForum', 'user', 'replies')
->where('discussion_forum_id', $forum->id)
->orderByDesc('comment_time')->get();
return Inertia::render('Forum/View.vue', [
'forum' => $forum,
'comments' => $comment
]);
}
这是我在 vue 中为 $comment 查询获得的数据,您可以看到回复部分的信息很少,为了按我的意愿显示它,我需要更多信息,例如回复的人不仅仅是有家长评论的人。
{
"id":4,
"user_id":41,
"discussion_forum_id":1,
"parent_id":null,
"comment":"adsfasdf asdf asdfa sdf ",
"comment_time":"2019-12-03 11:25:00",
"created_at":null,
"updated_at":null,
"discussion_forum":{
"id":1,
"theme":"asdfa",
"description":"asdffghjluui",
"user_id":1,
"anonymous":0,
"start_date":"2019-11-24 06:00:00",
"end_date":"2019-12-30 06:00:00",
"created_at":"2019-11-27 13:21:03",
"updated_at":"2019-11-27 13:21:03"
},
"user":{
"id":41,
"name":"Isadora Felix",
"card":"12346",
"scard":"97531",
"user_type_id":4,
"email":"i@email.com",
"created_at":"2019-12-03 10:09:26",
"updated_at":"2019-12-03 10:09:26"
},
"replies":[
{
"id":6,
"user_id":39,
"discussion_forum_id":1,
"parent_id":4,
"comment":"not agreeing",
"comment_time":"2019-12-03 11:26:01",
"created_at":null,
"updated_at":null
}
]
}
是否有另一种方法可以让我可以获取有关回复的信息,就像它是家长评论一样?还是有更好的方法来解决这个问题?
【问题讨论】:
标签: laravel