2014-04-13 6 views
9

Ich habe ein weiteres Feld in der Datenbank über die created_at und updated_at als TIMESTAMP der Feldname ist Datum.Unerwartete Daten beim Speichern auf eloquent/Laravel

Also habe ich die Methode getDates() auf meinem Modell eloquent überschrieben, weil ich wollte, dass das Feld aus Kohlenstoff instanziiert wird.

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

Aber wenn ich gehen, um einen neuen Datensatz in der Datenbank erstellen sie werfen mir eine Ausnahme:

InvalidArgumentException Unerwartete Daten gefunden. Unerwartete Daten gefunden. Unerwartete Daten gefunden.

Ps: d-m-Y h:i

ich jeden Vorschlag geschätzt

+0

Sie haben die Lösung in meiner Antwort jetzt. –

Antwort

10

Sie Array von getDates zurück weiß nicht, wie dieses Problem herauszufinden, mit verschmolzen wurde: der Wert aus dem Formular in EU-Format gesendet die dafault ein, was zu:

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

so verwenden Sie nur 'date' da und sollte in Ordnung sein.

Versuchen Sie, einen Mutator für "Datum" einzurichten, um die Daten von der Eingabe in das Zeitstempelformat zu konvertieren. Der Fehler, den Sie erhalten, ist nicht auf Eloquent aber Carbon.

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

Auch gibt es Fehler in der Dokumentation, wie getDates Datum Accessoren definiert, nicht Mutatoren ..

+0

Versucht, aber scheint nicht das sein, das Problem, danke. Anyway wird nicht zusammengeführt, sondern überschrieben. – Fabrizio

+0

Ja, mein Schlechter. Ich habe gerade erkannt, was das Problem ist. Überprüfen Sie die Bearbeitung. –

+0

Ja, das ist die richtige Antwort, die ich auf diesem Weg versucht habe, um zu sehen, ob es funktioniert und es tut. :) Danke Kumpel. – Fabrizio

0

Auch wenn sein ein Jahr altes Thema und ich bin Platzierung noch meinen Input für jeden zu kämpfen, auch nach der Einstellung der Mutator.

Wenn das HTML-Eingabe-Datum-Element das Datum im Atom-Format (1975-12-25T14: 15: 16-05: 00) übergibt, hilft der Datumsmutator nicht. Sie müssen das folgende Update in Illuminate \ Database \ Eloquent \ Model-Klasse in Zeile # 2848 anwenden, um es zu funktionieren (in Laravel # 5).

$ wert = Carbon :: createFromFormat ($ format, (neue DateTime ($ wert)) -> format ('Y-m-d H: i: s'));

1

Try this:

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