这是我试图获得教条
的字段{
"_id" : ObjectId("5512f2ae73d151bb528b4589"),
"name" : "Strandby-1",
"enddate" : ISODate("2015-03-31T22:00:00.000Z"),
"startdate" : ISODate("2015-03-24T23:00:00.000Z")
}
现在我试图在我的存储库中找到它
$time = new \DateTime();
$query = $this->createQueryBuilder();
$query
->field('startdate')->gte($time)
->field('enddate')->lte($time)
;
return $query->getQuery()->getSingleResult();
但我刚刚获得null
我总是尝试$time = new \MongoDate();
,但仍然获得null
答案 0 :(得分:1)
Doctrine还将DateTime,字符串时间或时间戳自身转换为MongoDate, 看看doctrine \ mongodb-odm \ lib \ Doctrine \ ODM \ MongoDB \ Types \ DateType.php
public static function getDateTime($value)
{
$datetime = false;
$exception = null;
if ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
return $value;
...
在
中调用public function convertToDatabaseValue($value)
{
if ($value === null || $value instanceof \MongoDate) {
return $value;
}
$datetime = self::getDateTime($value);
所以问题不在日期类型中。你的问题是逻辑的。
您正在尝试使用startdate> = now> = enddate
获取对象试试这个:
->field('startdate')->lte($time)
->field('enddate')->gte($time)