2017-04-14 1 views
1

service_3_totaldecimal(10,2)라는 내 데이터베이스 테이블의 필드가 있습니다. 내 마이 그 레이션에서 nullable() 필드로 설정 했으므로 Null = Yes 및 Default = NULL 데이터베이스에 있습니다. 내 양식을 제출할 때 나는이 필드를 비워두면Laravel null 값의 DB 필드에 공백 값을 삽입 할 수 없습니다

나는 다음과 같은 오류가 발생합니다 :

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

내가이 필드를 데이터베이스에 null이 될 수 있습니다 나는이납니다 왜 아무 생각이 없습니다. 나는 십진수 데이터 타입이라는 것과 관련이 있다고 생각한다.

어떤 아이디어? 귀하의 코멘트에서

+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

Ofcourse, good old'" "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 값을 변환하기 전에/업데이트를 만드는 기능을 사용할 수 있습니다 당신은 아마 열에 데이터의 잘못된 유형을 전달하는

관련 문제