あきぞらです。
Laravel
でEloquent
を使っていて、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
での比較ができるようになりました。