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で時刻が登録されているのを確認できます。
こちらもおススメ