[PHP]Eloquentパッケージを単体で利用時、created_atに入る時刻のタイムゾーンをJSTにする

カテゴリ: PHP | タグ: ,

LaravelでORマッパーとして、Eloquentを使用ている場合、タイムゾーンを変更するには、config/app.phpのtimezoneを'UTC'から'Asia/Tokyo'に変更すれば、DBに登録される時刻がJSTになります。

ですが、Laravelを使わずに、Composerを使ってilluminate/databaseパッケージの単体利用している場合は、config/app.phpファイル自体が無いので、この方法でタイムゾーンを設定することができません。

illuminate/databaseパッケージの単体利用する場合のタイムゾーンはどうやって指定すればよいでしょうか?

対処方法

このような場合は、Illuminate\Database\Capsule\Manager::addConnection()の引数で、timezoneを指定すればよいです。

UTCとJST(日本標準時)の差は9時間なので、JSTで管理したい場合はtimezoneに'-09:00'を指定します。

$db = new Illuminate\Database\Capsule\Manager;
$db->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'test',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'timezone'  => '-09:00',                #  <--- これを追加する
]);

この状態でデータを登録し、MySQLで直接select文を実行するとJSTで時刻が登録されているのを確認できます。


Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です