I could use some help on this issue. I am creating an application using Symfony2 + mongodb + doctrine. I just want to use Doctrine ODM to query all users who are logged in in the last 5 minutes. I have a collection of users with a date field named date_last_login.
So, I am trying to use the query builder as follows:
<?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();
When I looked at the compiled request using the symfony2 profiler, here is what I got:
db.User.find({ "date_last_login": { "$gte": new Date("Fri, 23 Dec 2011 15:30:05 +0100") } });
It seems like the perfect exception that a date is 10 minutes earlier than 5 minutes? I just do not understand. If I reset my php DateTime object, the date is correct: 2011-12-23 15:35:05 (five minutes before 15:40).
So, I tried to collect the same query without deleting any minutes, and this time everything is fine:
<?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") } });
What am I doing wrong? Thanks for the help!
source share