0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel12でテーブルのcreated_atとupdated_atの時間がズレていた

Posted at

概要

laravel12をインストールしてSeederで作成したデータでcreated_atupdated_atが現地時間(日本時間)と異なっていることに気づきました。
タイムゾーンの設定が原因なのはほぼ確だとして、どこから設定したっけ?SQL側?Laravel側?と迷って色々試した結果、めちゃくちゃ簡単かつLaravel11以前はこうしていたのを思い出したので記録しておきます。

現象

上の赤枠がテーブルに登録された日時で、下の赤枠が登録時点の日本時間です。
ざっくり9時間ほどのズレがあるので、登録データの時間を日本時間に変更する必要があります。
laravel12-timezone2.png

結論

project/config/app.phpの中を修正し、タイムゾーンを日本に変更することで直ります。
この設定はlaravel11まではデフォルトでありましたが、laravel12では何故か消えていたのですっかり忘れていました。

今回は具体的には下記手順で修正を行います。

  1. project/config/app.phpを修正
  2. .envAPP_TIMEZONEを追加しAsia/Tokyoを設定する
project/config/app.php
// Laravel12のデフォルト
'timezone' => 'UTC',

// 修正後
'timezone' => env('APP_TIMEZONE', 'UTC'),

// 修正後 .envを使いたくないなら下記のように直接していするのもOKです。
'timezone' => 'Asia/Tokyo'
.env
APP_TIMEZONE=Asia/Tokyo

一応画面キャプチャも貼っておきます。

project/config/app.php
laravel12-timezone1.png

.env
laravel12-timezone3.png

今回はSeederかつデータを初期化してもOKなので、以下コマンドでデータを作り直します。
※このコマンドは全データを削除、Seederに書いた処理を実行するため注意して使用してください。
(消したらやばいデータがあると控えめに言って生きた心地がしないでしょう)

php artisan migrate:fresh --seed

結果

無事にデータの時間が一致したことを確認できました。
laravel12-timezone4.png

0
0
0

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?