2016-12-25 6 views
1

Ich arbeite an einem Backend mit Eloquent Models. Um einen Standardmodus für die Ausgabe von Datumsangaben festzulegen, suche ich nach einer Möglichkeit, dem Eloquent Model mitzuteilen, seine Datumsattribute als lange Zeit (Unix-Timestamp) auszugeben.Force Eloquent Models geben alle Zeitstempel so lange aus

$user = User:find(id); 
echo $user->toJson(); 

// die aktuelle Ausgabe

{ 
    "id":1, 
    "username":"root", 
    "created_at":"2016-12-25 18:23:34", 
    "updated_at":"2016-12-25 18:23:34" 
} 

// die gewünschte Ausgabe

{ 
    "id":1, 
    "username":"root", 
    "created_at":1482690214, 
    "updated_at":1482690214 
} 

Gibt es eine saubere Art und Weise die outputing toJson() oder jede andere Art und Weise außer Kraft zu setzen, dies zu erreichen ?

bearbeiten

Haben Sie etwas, dass es eine gute Idee, den Zauber __get außer Kraft zu setzen()? Oder benutzt Eloquent einen anderen Weg, um auf das Attribut zuzugreifen, wenn es nachJson ruft?

Antwort

1

Set gewünschte Format to $dateFormat variable:

protected $dateFormat = 'U'; 

Standardmäßig werden die Zeitstempel als Y-m-d H:i:s formatiert. Wenn Sie das Zeitstempelformat anpassen müssen, legen Sie die Eigenschaft $dateFormat in Ihrem Modell fest. Diese Eigenschaft legt fest, wie Datumsattribute in der Datenbank gespeichert sind, sowie deren Format, wenn das Modell auf einem Array oder JSON serialisiert

https://laravel.com/docs/5.3/eloquent-mutators#date-mutators

+0

InvalidArgumentException: Nachgestellte Daten in ... \ Anbieter \ nesbot \ Carbon \ src \ Carbon \ Carbon.php auf Linie 425 –

+0

Ich habe diese Ausnahme, wenn Sie Ihre Lösung Sir versuchen. Was habe ich falsch gemacht? –

+0

@KarimKharba versuchen, die Migration so zu ändern, dass "Integer" anstelle von "Zeitstempel" verwendet wird, wie in dieser [Antwort] (http://stackoverflow.com/questions/35915576/laravel-timestamp-saving-time-as-unix-timestamp)/35915610 # 35915610). –

Verwandte Themen