doctrine odm为日期字段

时间:2015-11-25 08:20:14

标签: php mongodb symfony doctrine-orm

我使用symfony和doctrine mongodb odm。在持久化文档后,我在db中获得了正确的数据:

{
  "_id": ObjectID("565572731ba05cb40e000029"),
  "date": ISODate("2015-10-31T23:00:00.000Z"),
  "from": 10,
  "to": 18,
  "type": "work",
  "comment": "",
  "createdOn": ISODate("2015-11-25T08:33:55.000Z")
}

但是当我尝试获取存储库中的数据时,它返回null作为日期字段的值。

*编辑:我删除了" createdOn" (也是日期类型字段)并且在它工作正常之后。但是当我在我的文档中再次有两个日期字段时,它返回NULL,但现在为" createdOn"字段。

object(AppBundle\Document\Report)#636 (10) {
  ["id":protected]=>
  string(24) "565572731ba05cb40e000029"
  ["date":protected]=>
  NULL
  ["from":protected]=>
  int(10)
  ["to":protected]=>
  int(18)
  ["type":protected]=>
  string(4) "work"
  ["comment":protected]=>
  string(0) ""
  ["createdOn":protected]=>
  object(DateTime)#572 (3) {
    ["date"]=>
    string(26) "2015-11-25 09:33:55.000000"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(13) "Europe/Berlin"
  }

}

我尝试使用不同的字段名称(假设"日期"保留)但结果是相同的。 有谁知道为什么它是NULL?

我的文档类:

/**
 * @MongoDB\Document(collection="report", repositoryClass="AppBundle\Document\ReportRepository")
 * @HasLifecycleCallbacks 
*/
class Report {

    /** @MongoDB\Id */
    protected $id;

    /** @MongoDB\date */
    protected $date;

    /** @MongoDB\int */
    protected $from;

    /** @MongoDB\int */
    protected $to;

    /** @MongoDB\string */
    protected $type;

    /** @MongoDB\string */
    protected $comment;

    /** @MongoDB\date */
    protected $createdOn;

    /**
     * @MongoDB\PrePersist()
     * @MongoDB\PreUpdate()
     */
    public function prePersist() {
        $this->setCreatedOn(new \DateTime());
    }

...当然还有(生成的)getter和setter。并且" createdOn"是一个也是日期字段,它返回正确的值。

1 个答案:

答案 0 :(得分:1)

尝试清除缓存:

  

php app / console c:c