2017-09-16 4 views
1

Laravel 5.5へのアップデートは私には奇妙なものです。恐らく何か私はうんざりしていましたが、これらの問題は新しいバージョンで破損しました。この同じコードは5.4,5.3などでは失敗しませんでした。より大きな問題は、エラーが同じモデルで一貫していないことです。店で働いています。Laravel 5.5空の日付文字列の更新によりデータが欠落しているカーボンエラー

モデルの$ datesフィールドに 'decom_date'を含むようにオーバーライドされた 'prog'モデルには、 'decom_date'という日付フィールドがあります。ユーザーは新しい 'prog'のフォームに記入し、 'decom_date'フィールドをスキップすることができます。モデルはエラーなしで保存されます。ユーザーがまったく同じ形で同じPROGモデルを編集し、空白の「decom_date」フィールドを離れた場合、次のエラーが唯一Laravel 5.5で発生します。

message "Data missing" 
exception "InvalidArgumentException" 
file "/var/www/ipfast/vendor/nesbot/carbon/src/Carbon/Carbon.php" 
line 582 

IEカーボンは今の代わりに空のフォーマットを期待しています文字列更新時にのみ。これが働かない、と私は新しい破壊100%を停止すると思います...しかし、物事が突然壊れたとき、私は特にとして、心配 -

public function setDecomDateAttribute($value) 
{ 
    $this->attributes['decom_date'] = $value ?: null; 
} 

いいえ問題は:私はそうのようなモデルにミューテータでこれを回避することができますそれは貯蓄を超えて一貫していないようです。このパターンは、私が日付を持っているすべてのモデルにわたって一貫して失敗し、更新前に破損していませんでした。

誰かがこれを軽視することができますか?

答えて

0

この現象は確認できません。日付が空文字列の場合は、更新中または作成中であっても、投稿されたエラーで常に失敗します。

通常Laravel 5.4と5.5でのグローバルなミドルウェア・スタックが含まれています

 \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, 

をあなたは、このミドルウェアemptry文字列では、このアプリでは、\のHttp \ Kernel.php

を確認することができますが、自動的に変換されshoul Carbonが適切に処理するNULL値。

想像できるところは、作成中にこのフィールドをスキップすると、要求データに存在しないことです(ちょうどdd($ request)ですべてのストアメソッドの上でチェックしてください)

更新メソッドでフィールドを空白のままにした場合、結果は空の文字列になります(上記のミドルウェアがない場合...)

+0

本当にありがとうございます。私はL5.0でこのアプリを書いたので、これを手動で行う必要があったので、ミドルウェアを使用しませんでした。つまり、ミドルウェアを使用しないでください。これは私の問題ではありません。バージョンはフィールドは存在しませんでしたが、現在は両方のストア/更新メソッドで空の文字列として返されます。別のLaravelCollectiveの問題かもしれませんが、diffストア/アップデートについてはまだ説明できません。あるいは、$ requestコードで何か変わったかもしれません。まだ喜びはありません。 – Watercayman

関連する問題