2017-04-14 23 views
1

service_3_totalというデータベーステーブルのフィールドはdecimal(10,2)です。私はこれをマイ・マイグレーションのnullable()フィールドに設定していますので、データベースのNull = YesとDefault = NULLに設定してください。Laravelはnull値のDBフィールドに空白値を挿入できません

私のフォームを送信するとき、私は、このフィールドを空白のままにしておくと、私は次のエラーを取得する:

General error: 1366 Incorrect decimal value: '' for column 'service_3_total'

私は、このフィールドは、データベース内のNULLであることを認めてきたように、私はこれを取得していますなぜ見当がつかない。私はそれが10進データ型であるという事実と関係があると思います。

すべてのアイデア?あなたのコメントで

+1

データを管理します。いくつかのコードを共有するための注意? – TurtleTread

+0

データがありません。フィールドに値を挿入しなかったため、フィールドは空白です。ここで提出されたフォームデータを調べると、そのフィールドには何が得られるのですか? '' service_3_total "=>" "' – user3574492

答えて

3

あなたは挿入する変数の値があると述べている:!

"service_3_total" => "" 

空の文字列== nullをあなたがNULLの代わりに空の文字列を渡している

、MySQLが出erroringされるようにそれを ""数値に解析しようとしています。

このようなものは、あなたのコードでうまくいく可能性があります。挿入の前にこれを追加するだけです。あなたは今、これをしようとすると

if (!$data['service_3_total']) { 
    $data['service_3_total'] = null; 
} 

、MySQLが正しくDBでそのようにnull値を特定し、それを入力します(あなたのユースケースに応じて、それがよりエレガントに、これはそれがエラーなしで動作させるためだけです)、空の文字列は機能しません。

+0

もちろん、古い "" "vs null" – user3574492

-1

"service_3_total" => ""列の値を空の文字列に設定し、配列全体を実行して実行すると、空の文字列が文字列型でNULLに等価でないため、エラーが発生します。デフォルトでSQLを実行するには、配列内でこのキーの設定を解除する必要があります。

0
class YourModel extends Model 
{ 
    protected static function boot() 
    { 
     static::creating(function ($model) { 
      $model->service_3_total = empty($model->service_3_total) ? null : $model->service_3_total ; 
     }); 

     static::updating(function ($model) { 
      $model->service_3_total = empty($model->service_3_total) ? null : $model->service_3_total ; 
     }); 
    } 

} 

あなたがのmodelを聞かせて、コントローラいじり防ぐために、あなたのモデル内のnullblank値を変換する前に作成/更新機能を使用することができますがあなたはおそらく、その列へのデータの間違った種類を渡している

関連する問題