Laravel

【Laravel】Eloquentの条件でtimestampで比較をする方法!

あきぞらです。

LaravelEloquentを使っていて、timestampで比較をしたい場面がありました。

うまくやる方法がなかなか見つからず、自前で実装してみました。

今回はその方法の1つについて紹介していきます!

date()を使ってtimestamp型を比較

reserved_postsというテーブル(モデルはReservedPost)にある、

send_atカラムが現在時刻より後のデータを取得してみます。

// 日本時間に設定
date_default_timezone_set('Asia/Tokyo');

// send_atが現在時刻以降
$reserveData = ReservedPost::where('send_at', '>=',  date('Y-m-d H:i:s')) 
            ->get();

現在時刻をdate('Y-m-d H:i:s')として、timestampで比較しています。

時間の指定をする場合

たとえば、send_atが「30分以内のもの」、「1時間以上経過したもの」など、

時間の指定をしたいときがあります。

そんなときは、time()関数を比較してあげます。

// send_atが今から30分(30*60秒)経過
$reserveData = ReservedPost::where('send_at', '<=',  date('Y-m-d H:i:s', time()-(30*60))) 
            ->get();

これでtimestampでの比較ができるようになりました。

-Laravel

Copyright© あきぞらてっく , 2021 All Rights Reserved Powered by AFFINGER5.