如何使用Doctrine将日期作为对象保存到MongoDB?

时间:2014-08-11 15:48:36

标签: php mongodb doctrine doctrine-odm

当我添加新记录时,日期保存为字符串:

"created_at" : "0.67200000 1407770545" 

我的问题是如何将日期保存为对象?我期待看到这样的事情:

"created_at" : ISODate("2013-09-22T07:41:44.451Z"),

我的代码:

class User
{
    /**
     * @MongoDB\Date
     * @MongoDB\Field(name="created_at")
     */
    protected $createdAt;

    /**
    * @param MongoDB\Date $createdAt
    * @return self
    */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;
        return $this;
    }

    /**
    * @return MongoDB\Date $createdAt
    */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }
}

$user= new User();
$user->setCreatedAt(new \MongoDate());

$dm = $this->get('doctrine_mongodb')->getManager();
$dm->persist($user);
$dm->flush();

1 个答案:

答案 0 :(得分:1)

仅适用于@MongoDB\Date注释。

添加第二个注释@MongoDB\Field(name="created_at")时,它不会以正确的类型保存日期。原因是@MongoDB\Field注释需要指定数据类型。

通过更改注释来解决问题:

/**
 * @MongoDB\Date
 * @MongoDB\Field(name="created_at")
 */

为:

/**
 * @MongoDB\Field(name="created_at", type="date")
 */