概要
laravel12をインストールしてSeederで作成したデータでcreated_at、updated_atが現地時間(日本時間)と異なっていることに気づきました。
タイムゾーンの設定が原因なのはほぼ確だとして、どこから設定したっけ?SQL側?Laravel側?と迷って色々試した結果、めちゃくちゃ簡単かつLaravel11以前はこうしていたのを思い出したので記録しておきます。
現象
上の赤枠がテーブルに登録された日時で、下の赤枠が登録時点の日本時間です。
ざっくり9時間ほどのズレがあるので、登録データの時間を日本時間に変更する必要があります。

結論
project/config/app.phpの中を修正し、タイムゾーンを日本に変更することで直ります。
この設定はlaravel11まではデフォルトでありましたが、laravel12では何故か消えていたのですっかり忘れていました。
今回は具体的には下記手順で修正を行います。
-
project/config/app.phpを修正 -
.envにAPP_TIMEZONEを追加しAsia/Tokyoを設定する
// Laravel12のデフォルト
'timezone' => 'UTC',
// 修正後
'timezone' => env('APP_TIMEZONE', 'UTC'),
// 修正後 .envを使いたくないなら下記のように直接していするのもOKです。
'timezone' => 'Asia/Tokyo'
APP_TIMEZONE=Asia/Tokyo
一応画面キャプチャも貼っておきます。
今回はSeederかつデータを初期化してもOKなので、以下コマンドでデータを作り直します。
※このコマンドは全データを削除、Seederに書いた処理を実行するため注意して使用してください。
(消したらやばいデータがあると控えめに言って生きた心地がしないでしょう)
php artisan migrate:fresh --seed


