首页 > 解决方案 > 购买一年后如何查看优惠券是否过期?

问题描述

我正在 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"]);
        }

标签: laravellaravel-5.8

解决方案


如果到期规则发生变化,将来基于字段的到期日期created_at可能会出现问题。例如,考虑一下如果您决定代金券实际上应该在 6 个月后过期会发生什么。如果我购买了一张预计可以使用一年的代金券,那么我的提前到期是不公平的。如上一个答案中提到的更好的方法是将到期日期存储在表中的单独列中。这将使检查到期的代码更加简单,并且如果需要,还可以让您有不同的到期时间,例如,高级代金券可以持续 2 年,而不仅仅是一年。


推荐阅读