2016-04-25 39 views
0

我使用jenssegers MongoDB的 我試圖挽救created_at和的updated_at在我的控制器,錯誤的DateTime 5.2

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

,甚至更新也,錯了日期節省

在我app.php

別名

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

在供應商

'Jenssegers\Mongodb\Auth\PasswordResetServiceProvider', 

在我的模型

use Moloquent; 

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

enter image description here

請幫我解決這個問題 提前感謝!

+0

你在使用'jenssegers/Laravel-MongoDB'包嗎?另外,爲什麼你要手動設置created_at和updated_at(因爲它在創建時自動設置)? – felipsmartins

+0

評論created_at和updated_at插入,並保存在數據庫「updated_at」:ISODate(「1970-01-15T17:25:44.107Z」), 「created_at」:ISODate(「1970-01-15T17:25:44.107Z 「) 無法獲取數據,爲什麼日期錯誤@felipsmartins – Gireesh

+0

您爲什麼要手動設置created_at和updated_at? – felipsmartins

回答

2

其實 - 使用jenssegers/Laravel-MongoDB包時 - created_at的updated_at屬性保存新的模型對象時自動設置的。

但是,如果您仍然需要手動設置時間戳或其他任何日期時間字段,則必須將DateTime對象(或碳)轉換爲MongoDB\BSON\UTCDateTime

因此,這將是這樣的:

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

而對於另一個日期時間比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()可從任何模型實例,因爲它從父模型繼承(見github)。此方法將DateTime轉換爲可存儲的UTCDateTime對象(這是內部日期時間mongo rep)。

+0

Jenssegers \ Mongodb \ Eloquent :: fromDateTime(),我應該在哪裏添加這個? – Gireesh

+0

@Gireesh我已經更新了答案。 – felipsmartins

+0

感謝您的幫助。但是,請你幫助我獲得確切的日期。我的日期保存爲1970-01-15 – Gireesh