Doctrine Mongodb ODM e DateTime query
Eu poderia usar alguma ajuda para este problema. Estou criando um aplicativo usando a doutrina Symfony2 + mongodb +. Eu só quero usar o Doctrine ODM para consultar todos os usuários que foram registrados nos últimos 5 minutos. Eu tenho uma coleção de usuários com um campo de data chamado date_last_login.
Então eu tento usar o construtor de consultas assim:
<?php
// Creating a DateTime object and susbtract 5 min from now
// local time is 15:40:05, timezone: 'Europe/Paris'
$_dateTime = new \DateTime();
$_interval5Min = new \DateInterval('PT5M');
$_dateTime->sub($_interval5Min);
$query = $this->createQueryBuilder('User')
->field('date_last_login')->gte($_dateTime)
->getQuery();
->execute();
Quando eu olhei para a consulta montada usando o symfony2 profiler, aqui está o que eu tenho:
db.User.find({ "date_last_login": { "$gte": new Date("Fri, 23 Dec 2011 15:30:05 +0100") } });
Parece bom, exceto que a data é 10 minutos antes e não 5 minutos? Eu simplesmente não entendo. Se eu despejar meu objeto php DateTime, a data está correta: 2011-12-23 15:35:05 (cinco minutos antes das 15:40).
Então eu tentei montar a mesma consulta sem subtrair nenhum minuto e, desta vez, está tudo bem:
<?php
// local time is 15:50:00
$query = $this->createQueryBuilder('User')
->field('date_last_login')->gte(new \DateTime())
->getQuery();
->execute();
// query is ok:
db.User.find({ "date_last_login": { "$gte": new Date("Fri, 23 Dec 2011 15:50:00 +0100") } });
O que estou fazendo de errado ? Obrigado pela ajuda