Frage

Ich habe ein weiteres Feld in der Datenbank über dem created_at Und updated_at als TIMESTAMP Der Feldname ist Datum.

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

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

Aber wenn ich einen neuen Datensatz in der Datenbank erstelle, wird eine Ausnahme ausgelöst:

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

Ps:Der vom Formular gesendete Wert liegt im EU-Format vor: d-m-Y h:i

Ich weiß nicht, wie ich dieses Problem lösen kann. Jeder Vorschlag ist willkommen

War es hilfreich?

Lösung

Ihr von getDates zurückgegebenes Array wurde mit dem Standard-Array zusammengeführt, was zu Folgendem führte:

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

Verwenden Sie dort also nur „Datum“, und das 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, liegt nicht bei Eloquent, sondern bei Carbon.

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

Außerdem gibt es einen Fehler in den Dokumenten, da getDates Datumszugriffsfunktionen und keine Mutatoren definiert.

Andere Tipps

Versuche dies:

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

Sie können Ihr Format „d-m-Y h:i“ nicht verwenden.

Sie müssen eines davon verwenden:UNIX-Zeitstempel, Datumszeichenfolge (Y-m-d), Datum-Uhrzeit-Zeichenfolge, DateTime/Carbon-Instanz

https://laravel.com/docs/4.2/eloquent#accessors-and-mutators

Auch wenn das Problem schon ein Jahr alt ist und ich meinen Beitrag für alle leiste, die auch nach dem Setzen des Mutators immer noch Probleme haben.

Wenn das HTML-Eingabeelement „Datum“ das Datum im Atomformat (1975-12-25T14:15:16-05:00) übergibt, hilft der Datumsmutator nicht.Sie müssen den folgenden Fix in der Klasse Illuminate\Database\Eloquent\Model in Zeile Nr. 2848 anwenden, damit es funktioniert (in Laravel Nr. 5).

$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top