🤦

【Laravel】日付(timestamp)をformatで成形しようとすると call to a member fun

2021/09/19に公開

当方、初心者かつ初投稿につきお手柔らかにお願いします。自分がLaravelをいじっている際にハマった部分について共有します。
 また以下の記事を参考にしました。先にこちらの記事を見ていただいてもいいかもしれません。

https://qiita.com/nest_plusplus/items/fa1cb036aae2451e78c0

やりたいこと

  • Laravel(6.X系)でcreated_atなどのtimestampを独自のフォーマットに成形する。

このような場合、表示するbladeファイル側で以下のような実装をすると任意のtimestampを成形することができます。

{{$item->created_at->format('m')}}

またモデル側では変数datesにtimestampを追加します。

HogeModel.php
class MonthlyReport extends Model
{
    protected $dates = ['created_at', 'updated_at',];
}

それでも動かないとき

Controllerで何を用いてデータを取得しているかを確認してみてください。

HogeController.php
    public function index()
    {
        $items = DB::table('Hoges')->get(); //DBクラスを使用
        return view('index', ['items' => $items]);
    }

DBクラスだとtimestampはStringとして取得されるようです。このような場合、Eloquent ORMを使ってください。

HogeController.php
    public function index()
    {
        $items = HogeModel::all(); //Eloquent ORMを使用
        return view('index', ['items' => $items]);
    }

入門書をかいつまんでやってたら時間的に遠回りしちゃいましたね、、、

GitHubで編集を提案

Discussion