2014-04-13 8 views
9

Mam jeszcze jedno pole w bazie danych przez created_at i updated_at jako TIMESTAMP nazwą pola jest data.Nieoczekiwane dane wykryte podczas zapisu na elokwentnym/Laravel

Tak więc nadpisałem metodę getDates() na moim modelu elokwentnym, ponieważ chciałem, aby to pole było tworzone z węgla.

public function getDates() 
{ 
    return ['date','created_at','updated_at']; 
} 

Ale kiedy idę, aby utworzyć nowy rekord w bazie danych to rzucać mi wyjątek: znaleziono

InvalidArgumentException dane nieoczekiwane. Znaleziono nieoczekiwane dane. Znaleziono nieoczekiwane dane.

Ps: wartość wysłane z formularza w formacie UE: d-m-Y h:i

Nie wiem, w jaki sposób dowiedzieć się tego problemu wszelkie sugestie są doceniane

+0

masz rozwiązanie w mojej odpowiedzi teraz. –

Odpowiedz

10

Ty tablica wróciła z getDates została połączona z dafault, w wyniku czego:

['created_at','updated_at','deleted_at','date','created_at','updated_at']; 

więc używaj tylko "daty" tam i powinno być dobrze.


Spróbuj skonfigurować mutator dla "daty", aby przekonwertować dane z wejścia na format znacznika czasowego. Błąd, który otrzymujesz, nie dotyczy Eloquent ale Carbon.

public function setDateAttribute($value) 
{ 
    $this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value); 
} 

Ponadto istnieje błąd w docs, jak getDates określa datę akcesorów, nie mutatorów ..

+0

Próbowałem, ale wydaje się, że to nie ten problem. W każdym razie nie jest scalony, ale jest nadpisywany. – Fabrizio

+0

Tak, moje złe. Właśnie uświadomiłem sobie, na czym polega problem. Sprawdź edycję. –

+0

Tak, to jest właściwa odpowiedź, którą próbowałem w ten sposób, aby sprawdzić, czy działa i działa. :) Dzięki stary. – Fabrizio

0

Choć jego letnia problem i mam umieszczając moje wejście dla każdego, nadal zmaga się nawet po ustawieniu mutator.

Jeśli element daty wejścia html przekazuje datę w formacie atomu (1975-12-25T14: 15: 16-05: 00), to mutator daty nie pomoże. Musisz zastosować następującą poprawkę w klasie Iluminuj \ Baza danych \ Eloquent \ Model w linii nr 2848, aby ją uruchomić (w wersji nr 5).

$ value = Carbon :: createFromFormat ($ format, (nowa wartość DateTime (wartość $)) -> format ("Y-m-d H: i: s"));

1

Spróbuj tego:

Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);  
Powiązane problemy