Laravel なぜかモデルをデータベースに保存すると created_at と updated_at が更新される

ショコラ
ショコラ

Laravel なぜかモデルをデータベースに保存すると created_at と updated_at が更新される

「なぜかモデルをデータベースに保存すると created_at と updated_at が更新される」
という現象に遭遇した。
どうも Model の created_at と updated_at は「datetime型」になるようで、
それは Carbonオブジェクト として扱われるようになる。
DBにモデルを保存する際、この Carbon を JSON に変換してから保存しているのですが、
そこで時間が9時間前になってしまう現象が起きてしまったようです。

✔ datetime cast → Carbon
✔ 何も指定しない → string
✔ created_at系は Carbon

もっさん先輩
もっさん先輩

Mdels に Model クラスを作成して対応してみました。

namespace App\Models;

class Model extends \Illuminate\Database\Eloquent\Model
{
  protected function serializeDate( \DateTimeInterface $date ) {
    return $date->format('Y-m-d H:i:s');
  }
}

以上

Scroll to Top