LoginSignup
9
8

More than 5 years have passed since last update.

Laravelで起きたエラー「InvalidArgumentException: Unexpected data found.」の回避

Posted at

はじめに

今回は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つ目の解決方法は、あまり例のない変わったやり方であると思いますので、おかしな点がありましたら、ご教授願います。

9
8
1

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
9
8