laravel - 购买一年后如何查看优惠券是否过期?
问题描述
我正在 laravel 中构建一个凭证生成系统。此凭证有效期为一年。现在我想做的是,当用户尝试兑换优惠券时,用户不能这样做,因为它已过期。任何人都可以帮助我做到这一点。因为我对此一无所知。
这是我尝试过的
$voucher = Voucher::where('code', $request->code)->first();
$today = date("Y-m-d H:i:s");
$startdate = $voucher['created_at'];
$offset = strtotime("+365 day");
$enddate = date($startdate, $offset);
$today_date = new \DateTime($today);
$expiry_date = new \DateTime($enddate);
if ($expiry_date < $today_date) {
return response()->json(['error' =>"Voucher is expired"]);
}
解决方案
如果到期规则发生变化,将来基于字段的到期日期created_at
可能会出现问题。例如,考虑一下如果您决定代金券实际上应该在 6 个月后过期会发生什么。如果我购买了一张预计可以使用一年的代金券,那么我的提前到期是不公平的。如上一个答案中提到的更好的方法是将到期日期存储在表中的单独列中。这将使检查到期的代码更加简单,并且如果需要,还可以让您有不同的到期时间,例如,高级代金券可以持续 2 年,而不仅仅是一年。
推荐阅读
- cassandra - cassandra nodetool:无法连接到“127.0.0.1:7199”
- visual-studio - Visual Studio - 每当我打开 Visual Studio 2017 时,NuGet 包都会不断被删除或删除
- mysql - 简单的 PIVOT 查询引发错误消息
- php - 打开服务器致命错误内存不足
- ios - 领域是否支持 iOS 中的 LIMIT 查询?
- laravel - 如何强制一个独特的规则忽略给定的 id?
- android - 在 Android 复合视图中不接受来自 xml 的 onclick
- angularjs - 将带有 ng-model 的复选框添加到 Object AngularJS
- php - 如何从 htdocs 或 xampp 文件夹之外的 cmd 启动任何项目?
- java - 仅当我的 @Test 通过时才运行 @AfterMethod,而不是在 @Test 失败时运行