【发布时间】:2019-08-26 16:53:09
【问题描述】:
我有一个帖子系统。在我的网站上,用户可以发布文章并在每篇文章上发布 cmets。我要发布:当任何用户(不是帖子的作者)评论帖子时,我需要向帖子的作者发送通知,他的帖子是由 UserName 评论的......我这样做:
在 CommentController 中,我有一个对帖子发表评论的方法:
public function postComment(Post $post, AddPostRequest $request)
{
if ($request->parent_id !== null) {
$parent = Comment::where('id', $request->parent_id)->first();
$this->authorize('canComment', $parent);
}
$data = [
'user_id' => Auth::check() ? Auth::user()->id : null,
'post_id' => $post->id
];
$comment = $post->createComment(array_merge($request->except('g-recaptcha-response'), $data));
$post->owner->sendReviewNotification($review);
return $review;
}
在我的评论系统中,我有嵌套的 cmets。在模型帖子中,我有方法createReview.
public function owner()
{
return $this->belongsTo(User::class, 'user_id');
}
public function comments()
{
return $this->hasMany(Comment::class);
}
public function createComment($data = [])
{
$review = $this->comments()->create($data);
return $review;
}
在模型评论中我有:
public function post()
{
return $this->belongsTo(Post::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function parent()
{
return $this->belongsTo(static::class, 'id', 'parent_id');
}
public function children()
{
return $this->hasMany(static::class, 'parent_id');
}
public function scopeActive($query)
{
return $query->whereNotNull('user_id')->where('active', 1);
}
现在:创建评论时,会向帖子的作者发送通知,但是当作者可以回复发布他的评论时,通知会再次发送给他,但我需要向作者发送通知评论。我该如何定义这种情况?我不需要总是向帖子的作者发送通知,我需要通知 cmets 的作者和作者,这些 cmets 由帖子的作者回答。
【问题讨论】: