다음 코드는 데이터베이스에서 빈 값을 가져오고 데이터베이스에서 빈 문자열을 가져옵니다.Laravel 5.4 데이터베이스에 NULL을 저장하지 않음
1) 테이블에 nullable
에서 확인 company
열을 확인하십시오
$customer->update(['company' => NULL]);
다음 코드는 데이터베이스에서 빈 값을 가져오고 데이터베이스에서 빈 문자열을 가져옵니다.Laravel 5.4 데이터베이스에 NULL을 저장하지 않음
1) 테이블에 nullable
에서 확인 company
열을 확인하십시오
$customer->update(['company' => NULL]);
당신은 3 가지를 고려해야합니다. 그렇지 않으면 null
을 거기에 넣을 수 없습니다.
2) Customer
모델 열의 $fillable
속성이 있는지 확인 company
3) 당신이 당신의 Customer
모델의 모든 뮤 테이터가없는 확인 - 그래서 당신은 값이 변경 될 수 있습니다 setCompanyAttribute
방법이없는 확인 자동으로 빈 문자열이 null로 설정되어있는 경우
답변 해 주셔서 감사합니다. 오류가 있음을 발견했습니다. 회사에 대한 돌연변이 : // –
솔루션
당신이 널 (null)로 데이터베이스 내부의 필드를 원하는 당신은 모든 뮤 테이터를 사용하지 않는 경우 괜찮아.
내 경우에는 다음 코드 단편을 사용하고 있습니까?
public function setCompanyAttribute($value)
{
$this->attributes['company'] = ucfirst($value);
}
은 그럼 당신은 $ 값이 null인지 확인하고, 그렇지 않으면 null로 빈 문자열입니다 수동으로 설정해야합니다.
모든 모델에서이 작업을 자동으로 수행하려면 EventServiceProvider에서 빈 문자열을 null로 다시 설정할 수 있습니다.
먼저 모델의 모든 속성을 확인하고 임시 배열로 설정해야합니다. 모델 인스턴스의 setAttribute() 메소드 안에는 뮤 테이터가 존재할 때 검사가 수행됩니다. 그러나 그것은 정확히 당신이 원하지 않는 것입니다. 왜냐하면 그것은 정의 된 뮤 테이터가있는 모든 필드를 빈 찌름으로 설정하기 때문입니다. 대신 setRawAttribute를 사용하여 이전 특성을 임시 배열의 특성으로 덮어 씁니다.
확인한 값이 빈 문자열이 아닌 경우 해당 필드에 이미 존재하는 값이 사용되므로 안전합니다. 그렇지 않으면 빈 문자열이면 null이 설정됩니다.
희망이 있습니다.
이것은 원래의 질문 –
@ MarcinNabiałek sry에서 제시되지 않은 당신과 현재의 코드로 받아 들여진 것을 변경하는 것은 아주 이상합니다. 다시 변경했습니다. 다음 독자가 내가 그것을 고쳤다는 것을 보는 것이 도움이 될 것이라고 생각했다. 답변을 통해 검토해야 할 부분이 나와 있지만 가능한 해결책을 제시합니다. –
그리고 db에서 꺼내려면 NULL을 원하십니까? – dparoli
@dparoli 예, 필드는 선택 사항이며 null 일 수 있으므로 null 인 경우 null이 아닌 빈 문자열과 데이터베이스의 빈 필드를 가져오고 싶습니다. –