はじめに
携わっている案件で、ユーザーがクーポンを使用する際にそのクーポンが有効期限内であるかどうかを確認する際にCarbonを使ったため、個人の備忘録として記事にしてみました。
今回の状況
use Carbon\Carbon;
public function createFromRequest(BaseRequest $request)
{
$requestData = $request->fillData();
// 有効期間の終了日
$requestData['end_date_of_expiry'] = '2022-09-30';
$endDateOfExpiry = new Carbon($requestData['end_date_of_expiry']);
// 出力内容 $endDateOfExpiry = 2022-09-30 00:00:00;
}
上記の様に リクエストデータが日付のみのため、変数$endDateOfExpiryの時間は、00:00:00になってしまいます。
そのため、Carbon::now()を用いて、クーポンを用いた日時を取得した場合に、2022年9月30日の00:00:01~23:59:59の間は有効期限外となってしまいます。
そのため、クーポンを使用する日付をCarbonを用いて変更する必要がありました。
実際に行ったこと
use App\Models\CouponModel;
use Carbon\Carbon;
public function createFromRequest(BaseRequest $request)
{
$requestData = $request->fillData();
// 有効期間の終了日
$requestData['end_date_of_expiry'] = '2022-09-30';
$endDateOfExpiry = new Carbon($requestData['end_date_of_expiry']);
// 出力内容 $endDateOfExpiry = 2022-09-30 00:00:00
// 今日の日付を00:00:00で変数に代入
$today = new Carbon('today');
// 出力内容 $today = 2022-09-30 00:00:00
// 今日の日付とクーポンの有効期限を比較して、クーポンのデータを取得
CouponModel::whereDate('end_date_of_expiry', '>=', $today)->get();
}
new Carbon('today')で今日の日付で00:00:00のデータを取得できるます。
終わりに
Carbonは他にも多くのメソッドなどがあるため、今後も活用できればと思います。
参考ページ