这是我试图了解原理的领域
{
"_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
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)