我有一张看起来像这样的表
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之类的信息,即使它来自同一个人。
答案 0 :(得分:0)
我决定不在这个复杂场景中使用验证器,只是查询数据库,它简单有效。
$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小时内已投票,则