Laravel SNSなんかでよくある○時間前、○日前、○週間前というやつ

対象カラムをPostテーブルのlast_updatetimeカラムとした場合
last_updatetimeから現在日時の差分で○時間前、○日前、○週間前という表示を行う

■model

class Post extends Model
{
  ・
  ・
  ・
    public function getAgo(){

        $diff_second = strtotime('now') - strtotime($this->last_updatetime);

        if(!is_int($diff_second)) return '';

        if($diff_second < 60){
            return  $diff_second."秒前";
        }elseif($diff_second < 3600){
            return floor($diff_second/60)."分前";;
        }elseif($diff_second < 86400){
            return floor($diff_second/3600)."時間前";
        }elseif($diff_second < 604800){
            return floor($diff_second/86400)."日前";
        }elseif($diff_second < 2592000){
            return floor($diff_second/604800)."週間前";
        }elseif($diff_second < 31536000){
            return floor($diff_second/2592000)."ヶ月前";
        }else{
            return floor($diff_second/31536000)."年前";
        }
        
    }
  ・
  ・
  ・
}

■view

表示したいところで、以下を記述。

{{ $post->getAgo() }}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です