2016-04-25 1 views
0

Ich verwende jenssegers MongoDB Ich versuche created_at und updated_at in meinem Controller zu speichern,Falscher Datetime in created_at und updated_at Feldern in Laravel 5.2

"updated_at" : ISODate("1970-01-11T19:45:21.925Z"), 
"created_at" : ISODate("1970-01-11T19:45:21.925Z") 

und auch für die Aktualisierung auch die falschen Termine sparen

in meinem app.php

Aliase

'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model', 

in Anbieter

'Jenssegers\Mongodb\Auth\PasswordResetServiceProvider', 

in meinem Modell

use Moloquent; 

class Task extends Moloquent{ 
     //$fillables = []; 
} 

enter image description here

mir bitte helfen, das Problem Vielen Dank im Voraus bei der Lösung!

+0

Verwenden Sie das Paket 'jenssegers/Laravel-MongoDB'? Warum möchten Sie auch created_at und updated_at manuell setzen (wie es automatisch zum Zeitpunkt der Erstellung festgelegt wird)? – felipsmartins

+0

kommentierte created_at und updated_at in einfügen und gespeichert in db "updated_at": ISODate ("1970-01-15T17: 25: 44.107Z"), "created_at": ISODate ("1970-01-15T17: 25: 44.107Z ") nicht in der Lage, die Daten zu holen, auch warum die Daten falsch sind @felipsmartins – Gireesh

+0

Warum möchten Sie created_at und updated_at manuell setzen? – felipsmartins

Antwort

2

Eigentlich - wenn jenssegers/Laravel-MongoDB Paket mit - created_at und updated_at Attribute werden automatisch eingestellt, wenn ein neues Modell Objekt zu speichern.

Wenn Sie jedoch noch Zeitstempel oder etwas anderes Datetime-Feld manuell setzen möchten, MÜSSEN Sie ein DateTime-Objekt (oder Carbon) in MongoDB\BSON\UTCDateTime konvertieren.

So wäre es so etwas wie diese:

$myModel = new MyModel(); 
$myModel->created_at = $myModel->fromDateTime(new \DateTime()); 
//... 

Und für eine anderen Datetime anderes Attribut als created_at/updated_at:

class Task extends Model 
{ 
    protected $collection = 'tasks'; 

    protected $duedate; 

    protected $dates = ['duedate']; 

    /** Mutator */ 
    public function setDuedateAttribute($value) 
    { 
     /** @var \MongoDB\BSON\UTCDateTime */ 
     $this->attributes['duedate'] = $this->fromDateTime(
      \DateTime::createFromFormat('d/m/Y H:i', $value . '00:00')); 
    } 
} 

Jenssegers\Mongodb\Eloquent::fromDateTime() von jeder Modellinstanz verfügbar ist, wie es von den Eltern Modell erbt (siehe github). Diese Methode konvertiert ein DateTime in ein speicherbares UTCDateTime-Objekt (das ist der interne Datetime-Mongo-Rep).

+0

Jenssegers \ Mongodb \ Eloquent :: fromDateTime(), wo soll ich das hinzufügen? – Gireesh

+0

@Gireesh Ich habe die Antwort aktualisiert. – felipsmartins

+0

danke für die Hilfe. Aber können Sie mir bitte helfen, das genaue Datum zu bekommen?Meine Daten speichern als 1970-01-15 – Gireesh