2016-07-22 48 views
1

我想將Carbon datetime存儲在Sub Json文檔中,而不是以ISO格式存儲它以下面顯示的不同方式存儲。如何在Laravel 5.2中的Sub Json文檔中存儲Carbon DateTime ISO對象MongoDB

"_id" : ObjectId("5791bc3d6e79d211aa5be019"), 
"breakUps" : [ 
    { 
     "amount" : 2000, 
     "expiry" : { 
      "date" : "2016-09-05 06:25:01.000000", 
      "timezone_type" : 3, 
      "timezone" : "UTC" 
     } 
    } 
], 
"updated_at" : ISODate("2016-07-22T06:25:01.576Z"), 
"created_at" : ISODate("2016-07-22T06:25:01.576Z") 

相反,它應該被存放像ISODate( 「2016-07-22T06:25:01.576Z」)格式。

我的口才Model類是:

class Configurations extends Eloquent 
{ 
    public $incrementing = false; 
    public $timestamps = true; 
    protected $collection = 'configurations'; 
    protected $dates = array('created_at','updated_at','breakUps.expiry'); 
} 

PHP代碼,我要用來保存對象

$config1 = new Configurations(); 
$config1->breakUps = [['amount' => 1000, 'expiry' => Carbon::now()->addDays(30)]]; 
$config1->save(); 
+0

我可以看到你是如何保存的分手正在討論 –

+0

話題這裏https://github.com/jenssegers/laravel-mongodb/issues/897 – Sharath

回答

2

日期存取器在Laravel不支持點符號,因此,

protected $dates = ['breakUps.expiry']; 

只是不行。解決此問題的一種簡單方法是將密鑰移至文檔的根目錄breakUps_expiry

protected $dates = ['breakUps_expiry']; 

目前已經登錄laravel-MongoDB的GitHub的頁面上的問題,您可以track it here

0

圍繞着工作,我的工作是使用原始蒙戈Date對象新\ MongoDate(),並在返回它,使用碳方法