忍者ブログ

STEP UP BLOG

Home > ブログ > > [PR] Home > ブログ > Laravel > Laravel4で日時をフォーマットする

Laravel4で日時をフォーマットする

DBから取ってきたデータの日時をお好みの形式で出力する。よくある処理です。
// Controller
$row = User::find(1);

// View
{{{$row->birthday->format('Y年m月d日')}}}


Laravelでは上記のように指定フォーマットで出力できます。
ただ、そのためにはformat()が使えるカラムを設定しないといけません。
vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
を見てみましょう。
getDates()を探します。
/**
 * Get the attributes that should be converted to dates.
 *
 * @return array
 */
public function getDates()
{
    $defaults = array(static::CREATED_AT, static::UPDATED_AT);

    return array_merge($this->dates, $defaults);
}


ここでカラム名の配列が返されます。
その配列を元に、該当するカラムのデータをCarbonのインスタンスに変換するように実装されています。
変換はasDateTime()で行なっていますね(興味ある人は調べてみてください)。
Carbonとは日時操作ライブラリです。
https://github.com/briannesbitt/Carbon
で、getDates()ですが、デフォルトでcreated_at, updated_atはCarbonのインスタンス化されます。 そこに$this->datesでこちらが指定したカラムを追加できるのですね。
というわけで、Eloquentを継承したモデルで、
class User extends Eloquent {

    protected $dates = ['birthday'];

...
}


とすると、
{{{$row->birthday->format('Y年m月d日')}}}


が使えるようになります。
直感に反しない書き方なので、これはかなり便利ではと思っています。
PR

Comment0 Comment

Comment Form

  • お名前name
  • タイトルtitle
  • メールアドレスmail address
  • URLurl
  • コメントcomment
  • パスワードpassword

PAGE TOP