这是问题所在,我有带有帖子和评论的应用程序。但是我想限制每个用户的评论,所以如果有1个帖子,则每个用户只有1条评论。有可能吗?
这是我在store
中的CommentController
函数:
public function store(Request $request, $post)
{
$this->validate($request, array(
'title' => 'required|max:200',
'desc' => 'required|max:800'
));
$comments = new Comment();
$comments->id_user = Auth::id();
$comments->id_post = $post;
$comments->title = $request->A;
$comments->desc = $request->B;
$comments->save();
return redirect()->route('controller.index');
}
我可以在此store
函数中添加什么查询,以限制用户仅在1条帖子中发表评论。谢谢大家希望能对我有所帮助。
答案 0 :(得分:2)
非常简单,您需要检查用户的评论和帖子是否已经存在,像这样:
if (! Comment::where('id_user', $userId)->where('id_post', $postId)->exists()) {
//save the comment
} else {
// do not save the comment
}
在您的情况下,$userId
可能是Auth::user()->id
,而$ postId是$post->id
。
答案 1 :(得分:1)
您应该尝试这个
检查此用户为此帖子添加的评论
$result = DB::table('comments')->where('id_user', '=', Auth::id())->where('id_post', '=', $incase->id)->get();
if(count($result) < 1){
$comments = new Comment();
$comments->id_user = Auth::id();
$incase = Incase::find($id);
$comments->id_post = $incase->id;
$comments->title = $request->A;
$comments->desc = $request->B;
$comments->save();
return redirect()->route('controller.index');
}
else{
return redirect()->route('controller.index')->with('warning','Already Commented');
}
OR
如果存储了一条评论,则为该用户隐藏评论框