8

Laravel Artisan Tinker で以下を実行する場合:

$article = new App\Article;
$article->published_at = Carbon\Carbon::now();

次のエラーが表示されます。

InvalidArgumentException with message 'Trailing data'

ただし、それ自体では、期待どおりにインスタンスCarbon\Carbon::now()が返されます。Carbon

published_atprotected $dates = ['published_at'];モデル内でCarbon インスタンスに変更する必要があり、 にも含まれていprotected $fillableます。

ここで何が起こっているか、またはどうすれば解決できるか知っている人はいますか?


編集: ルートの閉鎖で実行されたときに同じことが起こるため、Tinker に固有のものではありません

編集 2: 他の人がこれを経験しているように見えます: https://laracasts.com/discuss/channels/general-discussion/carboncarbonnow-ving-errorとhttps://laracasts.com/series/laravel-5-のコメントで 2 回基礎/エピソード/8

編集 3: 最初の例とほぼ同じコードがhttps://laracasts.com/series/laravel-5-fundamentals/episodes/15 at 15:10 でエラーなしで使用されています。

編集 4: 上記のコードの 2 行目を正常に$article->published_at = Carbon::now()->format('Y-m-d');動作するようにスワップし、データベースに格納されている時間も含めます (ただし、理由はわかりません)。

「末尾のデータ」は完全な日時が長すぎることを指す可能性があると思いますが、Laravelが日時を自動的に処理するのは奇妙に思えますが(たとえば、Carbonインスタンスへの自動変換)、これはそうではありません.

ただし、Edit 3 での使用が望ましいでしょう!

4

8 に答える 8

1

私は Laracast チュートリアルに従っていますが、同じエラーが発生しました。私は最終的に、この例外の何が問題なのかを理解しました。

関数内:

public function setPublishedAtAttribute($date)
{
    $this->attributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date);
}

$date の形式が「Ymd」であることに気付きました

ただし、私の create.blade.php と edit.blade.php では、フォーム入力は次のとおりです。

{!! Form::input('data-date', 'published_at', date('d-m-Y'), ['class' => 'form-control']) !!} 

私の日付形式が'dmY'であることに気付きました。

これが、Laravel によって例外がスローされる理由です。

すべてのファイルで日付形式を「Ymd」と同じにした後、例外は消えます。これが役立つことを願っています。

于 2016-03-03T02:08:06.150 に答える
1

データベースが次のような 10 進数のマイクロタイムを持つ日付値を返している場合、このエラーが発生します。

2016-10-06 20:16:23.96034

これらの余分な 10 進数が問題です。それらを削除すると、動作するはずです。

于 2016-10-13T01:34:36.807 に答える
0

モデルで使用するだけ

protected $dateFormat = ' H:i:s.Y-m-du';

またはそうでなければ

 public function getDateFormat()
 {
     return 'Y-m-d H:i:s.u';
 }

于 2021-07-07T14:14:57.577 に答える