2016-07-22 40 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(),并在返回它,使用碳方法