日期之间的mongodb原则
这是我的领域,我正试图与教条打交道日期之间的mongodb原则,mongodb,symfony,doctrine-orm,doctrine-odm,Mongodb,Symfony,Doctrine Orm,Doctrine Odm,这是我的领域,我正试图与教条打交道 { "_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(); $q
{
"_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
原则也会将DateTime、string time或timestamp自身转换为MongoDate,
查看条令\mongodb odm\lib\doctor\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)
它可能是OT,但我在您的对象中没有看到
league
字段。只是将其删除,因为这与查询没有任何关联,并且查询仍然为空