jensseger/laravel-mongodb 日付の取り扱い

環境:

jensseger/laravel-mongodb@3.7.0

 

f:id:monteecristoo:20201019092909p:plain

Moloquentを使用したmodelは、DB上にはデフォルトの設定ではMongoDB\BSON\UTCDatetimeで保管されている。

しかしキーにアクセスすると…

f:id:monteecristoo:20201019093318p:plain

timezoneがAsia/Tokyoで返るのはlaravelのconfig/app.phpでtimezone, localeをそれぞれAsia/Tokyo、ja に設定しているから。(設定後はphp artisan config:clearで反映)

 

Carbonで返ってくる。

例えばXXXX年XX月XX日という風に加工したければ、

return $o['created_at']->format('Y年m月d日');

 

これらを加味して…

$user = User::first();

// この時点ではBSON

$user['created_at'] = $user['created_at']->format('Y年m月d日');

return $user;

f:id:monteecristoo:20201019094737p:plain

となりエラーなので
$user['created_at_formatted'] = $user['created_at']->format('Y年m月d日');

unset($user['created_at']);

return $user;

 

 ref:

carbon.nesbot.com