购买一年后凭证如何过期?

时间:2019-08-28 09:46:12

标签: laravel laravel-5.8

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

2 个答案:

答案 0 :(得分:0)

假设您要将凭证存储在数据库中,则可以添加一个valid_until日期列,并在兑换凭证之前验证它是否是过去的。

答案 1 :(得分:0)

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