2016-04-06 11 views
0

diese gefunden, aber es half nicht: https://laracasts.com/discuss/channels/eloquent/timestampdatetime-issue-with-51-sqlserverDatetime-Ausgabe mit Laravel 5.2 & MS SQL Server

Wenn ich mein Datumsfeld wie so auf das Muster protected $dates = ['OrderDate','TimeStamp']; dann $order->OrderDate nennen bekomme ich folgende Fehlermeldung:

InvalidArgumentException with message 'Unexpected data found. 
Unexpected data found. 
The separation symbol could not be found 
The format separator does not match 
Trailing data' 

Aber, wenn ich ein Carbon-Date-Objekt die gleiche Formatierung und Kopieren mit \ einfügen Datum direkt von SQL Server manuell erstellen, macht es so erfolgreich:

>>> Carbon\Carbon::createFromFormat('Y-m-d H:i:s.000', '2015-12-29 00:00:00.000'); 
=> Carbon\Carbon {#835 
    +"date": "2015-12-29 00:00:00.000000", 
    +"timezone_type": 3, 
    +"timezone": "UTC", 
    } 

Was vermisse ich?

Antwort

3

Aus irgendeinem Grund Laravel wurde es als M j Y h:i:s:000A zu sehen - wahrscheinlich den Fahrer. Ich habe protected $dateFormat = 'M j Y h:i:s:000A'; zu allen MS SQL Server-Modellen hinzugefügt, die ich verwende.

+0

Hallo Jeremy, Ihre Lösung funktioniert in meinem Ende, aber ich frage mich, ob es eine andere Lösung abgesehen von der Festlegung der $ dateFormat? Ist dieses Problem mit dem SQL-Treiber oder etwas verbunden? Danke –

0

Die Problemumgehung besteht darin, Accessoren und Mutatoren einzurichten und das Datum manuell zu analysieren, anstatt es in das $ dates-Array zu schreiben.

So etwas:

public function getOrderDateAttribute($value) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s.000', $value); 
} 

public function getTimeStampAttribute($value) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s.000', $value); 
} 

public function setOrderDateAttribute($value) 
{ 
    $this->attributes['OrderDate'] = Carbon::createFromFormat('Y-m-d H:i:s', $value)->format('Y-m-d H:i:s.000'); 
} 

public function setTimeStampAttribute($value) 
{ 
    $this->attributes['TimeStamp'] = Carbon::createFromFormat('Y-m-d H:i:s.000', $value)->format('Y-m-d H:i:s.000'); 
}