#はじめに
今回はLaravelで「InvalidArgumentException: Unexpected data found.」というDBから日付データを取得した後、設定をしようとしたらエラーを出してしまったので、原因究明と解決方法を探してみたメモです。
#InvalidArgumentException: Unexpected data found.
DBからデータを取得して、formatを変えてcreated_atにデータを設定しようとした時に起きたエラー。
sample.php
$user = User::select('created_at')->first();
$user->created_at = date( 'Y/m/d H:i:s', strtotime( $user->created_at ) ); // error
##原因
created_atの日付のフォーマットが一致しないことが原因。
'Y-m-d H:i:s'で設定する必要があり、'Y/m/d H:i:s'では代入することは出来ない。
##解決方法
- 'Y-m-d H:i:s'で統一する。
sample.php
$user = User::select('created_at')->first();
$user->created_at = date( 'Y-m-d H:i:s', strtotime( $user->created_at ) );
- データを取得したいだけですとか、取得した$userにフォーマットを変えてどうしても入れたい場合などの抜け道。
sample.php
$user = DB::table('users')->select('created_at')->first();
$user->created_at = date( 'Y/m/d H:i:s', strtotime( $user->created_at ) );
とすることも。DB::table()を使うというところがポイント。
#おわりに
今回はこのエラーで頭を抱えました。
エラーの検索してもあまり状況が読めず、情報もあまりなかったので、色んな記事を漁って自分なりの解決方法を見つけたので、ここに載せました。
2つ目の解決方法は、あまり例のない変わったやり方であると思いますので、おかしな点がありましたら、ご教授願います。