Laravelで値のフォーマットを行う際、PHPのformat関数を使用すればいいかと考えていたのですが、調べてみたらもっと便利な方法がありました。
const.phpへ記述
例として、日付のフォーマットを行うことを想定します。
「created_at」「updated_at」に入っている値は以下画像のように「Y-m-d H:i:s」ですが、
この値をViewで表示する際は、「y/m/d」「y/m/d H:i:s」で表示させたい場合を想定します。

/config/const.phpに以下を記述します。
1 2 3 4 5 6 7 8 | <?php return [ 'format' => [ 'date' => 'y/m/d' , 'datetime' => 'y/m/d H:i:s' , ] ], |
Modelファイルの修正
Viewで取り回して使用する場合、PHP標準の関数を使用する際は問題ないのですが、Laravelで日付のフォーマットを行う際はModelファイルにある記述をしないとエラーが発生するため、app/Models/Hoge.phpへ追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Hoge extends Model { use HasFactory; use SoftDeletes; protected $table = 'hoge' ; protected $fillable = [ 〜略 'created_at' , 'updated_at' ]; // 追記 protected $dates = [ 'created_at' , 'updated_at' ]; } |
Viewで表示
表示の際は、foreachで取り出したものに対し、format関数内で第一引数にconfigを指定します。
引数の中身は以下の通りで、第一引数に定義したファイル名、第二、第三引数に定義したファイルに記述したキーを指定します。
1 2 3 4 | @ foreach ( $dates as $date ) <span>{{ $date ->created_at->format(config( 'const.format.date' )) }}</span> // y/m/d形式 <span>{{ $date ->updated_at->format(config( 'const.format.datetime' )) }}</span> // y/m/d H:i:s形式 @ endforeach |
定数ファイルで一元管理できるので、とても便利だなと思いました。
補足(応用)
また、日付以外のフォーマットも可能です。
例:statusカラムではint(2)で値を持っているが、View上ではステータス名で表示させたい場合(主に区分、ステータスなど)
・config/const.php
1 2 3 4 5 6 7 8 9 10 11 | <?php return [ 'stocks' => [ 'status' => [ '0' => '在庫なし' , '1' => '在庫あり' , '2' => 'お取り寄せ' , ] ] ], |
・view
1 2 3 | @ foreach ( $stocks as $stock ) <span>{{ config( 'const.stocks.status' )[ $stock ->status] }}</span> @ endforeach |