Так вот в чем проблема, у меня есть приложение с постом и комментарием. Но я хочу ограничить количество комментариев для каждого пользователя, поэтому, если есть 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 сообщение. Спасибо, ребята, надеюсь, вы можете мне помочь.
извини, уже отредактировал это
В зависимости от вашей логики, я предполагаю, что у вас есть таблица с комментариями. Это должно включать идентификатор сообщения и идентификатор комментария, а также идентификатор пользователя. Идентификатор сообщения связывает комментарий с сообщением, идентификатор комментария является первичным ключом таблицы комментариев, а идентификатор пользователя связан с пользователем, который оставил комментарий. Затем вы производите подсчет идентификатора комментария в таблице комментариев, где идентификатор сообщения равен рассматриваемому сообщению, а идентификатор пользователя совпадает с идентификатором пользователя. Затем сделайте заявление if вокруг этого.






Очень просто вам нужно проверить, существует ли уже комментарий для пользователя и публикации, например:
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.
что такое $ userid и $ postid, это неопределенная переменная?
Я обновил ответ, но вы уже должны самостоятельно выяснить, что такое $ userId и $ postId ...
Вы должны попробовать это
Проверить комментарий, добавленный к этому сообщению этим пользователем
$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');
}
ИЛИ
Скрыть поле комментариев для этого пользователя, если сохранен один комментарий
Что такое
$incase? Каков идентификатор публикации, к которой относится этот комментарий?