Я пытаюсь вставить какую-то запись, проверив, выполнены ли определенные условия. Что я планирую сделать, так это запретить пользователям голосовать дважды в день. Я использую электронную почту и дату в качестве параметров.
public function store(Request $request)
{
$this->validate($request, [
'flavour' => 'required|string',
'email' => 'required|email',
'lastname'=> 'required|string',
'firstname' => 'required|string'
]);
$vote = new Vote();
//$currentDate = Carbon::now()->toDateString();
$today = Carbon::now()->format('Y-M-D');
$dup = Vote::where(['email' => $request->email, 'created_at' => $today ])->get();
if (!$dup)
{
$vote->firstname = $request->firstname;
$vote->lastname = $request->lastname;
$vote->email = $request->email;
$vote->flavour = $request->flavour;
$vote->voter_ip = $request->ip();
}
else {
return response()->json([
'message' => 'You have voted today, please wait till another day!'
]);
}
if (auth()->user()->votes()->save($vote))
return response()->json([
'success' => true,
'data' => $vote->toArray()
]);
else
return response()->json([
'success' => false,
'message' => 'Vote could not be added'
], 500);
}
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что она не требует никакой записи, поскольку на ней отображается сообщение «Вы проголосовали сегодня, подождите, пожалуйста, до другого дня», даже если я вставлю новое электронное письмо и / или текущего пользователя с разными электронными письмами.