LoginSignup
0
2

More than 3 years have passed since last update.

Laravel8のdatetime型をjson出力するとYYYY-MM-DDT00:00:00.000000Z(ISO8601)で出力される

Posted at

はじめに

モデルからdatetime型のカラムを取得し、jsonで出力すると
日付がYYYY-MM-DDT00:00:00.000000Z(ISO8601)で出力される。
調べてみるとlaravel7から変更された仕様とのこと。
■参考URL
https://laravel.com/docs/8.x/eloquent-serialization#date-serialization

楽観排他チェックに更新日を使っているため、ISO8601では困る。
共通で日付を変換できるように修正する。

対応方針

\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php
    /**
     * Prepare a date for array / JSON serialization.
     *
     * @param  \DateTimeInterface  $date
     * @return string
     */
    protected function serializeDate(DateTimeInterface $date)
    {
        // return Carbon::instance($date)->toJSON();
        return $date->format('Y-m-d H:i:s');
    }

よくはないがフレームワーク内を修正。

終わり

参考サイトではserializeDateをオーバーライドすると書いてあるが、
どうすればいいかわからず。
とりあえずの対処方法を残します。

0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2