我有一个看起来像的表
vote_id
voter_email
target_id
vote_date
选民每天可以为每个target_id
投票一次。我正在努力验证选票,这就是我迄今为止得到的
['email' => "exists:participants_votes,voter_email,target_id,$targetId,vote_date,$date"];
如何检查范围的日期?有没有一种方法可以在不编写自定义代码的情况下做到这一点?
有after:date
验证器,但它必须与exists:
在同一范围内
基本上是这样的:(这个sql可能完全错误)
Select MAX(vote_date) FROM parcitipants_votes WHERE voter_email = ?
那么我会检查一下这个日期是否是>现在-24小时。
我正试图通过使用验证器以"正确"的方式进行验证,但也许这不是为了它…
注意:我不能每封电子邮件只有一个vote_count条目,因为我需要存储每个投票的vote_date等信息,即使它来自同一个人。
我决定不在这个复杂的场景中使用验证器,只查询数据库,它简单有效。
$voteDate = DB::table('participants_votes')
->where('voter_email', '=', $user->email)
->where('contest_id', '=', $contestId)
->where('target_user_id', '=', $targetId)
->where('created_at', '>', new DateTime('now -24 hours'))
->pluck('created_at');
如果电子邮件在过去24小时内进行了投票,则voteDate将为空。