Eloquent / Laravel에서 저장하는 동안 예상치 못한 데이터가 발견되었습니다
-
21-12-2019 - |
문제
created_at
를 통해 데이터베이스에 필드가 하나 더 있고 updated_at
로 TIMESTAMP
필드 이름이 날짜입니다.
이 필드가 탄소로부터 인스턴스화되기를 원했기 때문에 eLoent의 메소드를 웅변으로 덮어 씁니다.
public function getDates()
{
return ['date','created_at','updated_at'];
}
.
그러나 데이터베이스에 새 레코드를 만들 때 나에게 예외를 던지십시오 :
InvalidArgumentException 예기치 않은 데이터가 발견되었습니다.예기치 않은 데이터가 발견되었습니다. 예기치 않은 데이터가 발견되었습니다.
PS : 양식에서 전송 된 값은 EU 형식입니다 : getDates()
이 문제를 어떻게 알 수 없습니다. 어떤 제안을 알 수 없습니다
해결책
GetDate에서 반환 된 배열은 Dafault 하나의 결과로 병합되었습니다 :
['created_at','updated_at','deleted_at','date','created_at','updated_at'];
.
그래서 그곳에 만 '날짜'만 사용해야하며 괜찮을 것입니다.
'date'에 대한 mutator를 설정하여 데이터를 입력에서 타임 스탬프 형식으로 변환하십시오. 당신이 얻는 오류는 웅변적이지만 탄소가 아닙니다.
public function setDateAttribute($value)
{
$this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
.
또한 GetDate가 mutator가 아닌 날짜 접근자를 정의하기 때문에 문서에 실수가 있습니다 ..
다른 팁
시도 :
Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);
. "D-M-Y H : I"형식을 사용할 수 없습니다
다음 중 하나를 사용해야합니다 : 유닉스 타임 스탬프, 날짜 문자열 (Y-M-D), 날짜 시간 문자열, DateTime / Carbon 인스턴스
일년에 오래된 문제가 있지만, 뮤 네이터를 설정 한 후에도 여전히 고군분투하는 사람을 위해 내 입력을 배치하고 있습니다.
HTML 입력 날짜 요소가 Atom Format (1975-12-25T14 : 15 : 16-05 : 00)의 날짜를 전달하면 Date NeTator가 도움이되지 않습니다.일을 얻으려면 일을 얻으려면 \ database \ eLoquent \ Model 클래스에서 다음 수정 프로그램을 적용해야합니다.
$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));
.