Вы можете использовать between
с 2 \DateTime
объектов и вашего определения начала и конца недели. С COUNT()
и getSingleScalarResult
вы просто получите единственный целочисленный счет в качестве своего результата.
$start = new \DateTime();
// This will depend on which day you decide the week starts
if ('Monday' !== $start->format('l')) {
// if week starts on Sunday you would just use (int) $start->format('w')
$start->modify(sprintf('- %d days', (int) $start->format('w') - 1));
}
// clone the start date and add 6 days to get the end date
$end = clone($start);
$end->modify('+ 6 days');
// set the times to midnight for start and 1 second before midnight for finish
$start->setTime(0, 0, 0);
$end->setTime(23, 59, 59);
// for the date 2015-07-16 (today) this would result in
// start = 2015-07-13 00:00:00 (Monday)
// end = 2015-07-19 23:59:59 (Sunday)
$queryBuilder = $em->createQueryBuilder();
return $queryBuilder
->select('COUNT(o.id)')
->from('DRPAdminBundle:Log', 'o')
->where($queryBuilder->expr()->between('o.last_updated', ':start', ':end'))
->setParameter('start', $start)
->setParameter('end', $end)
->getQuery()
->getSingleScalarResult();
Также
если вы просто хотели, чтобы получить последние 7 дней вы могли бы использовать ..
$queryBuilder = $em->createQueryBuilder();
return $queryBuilder
->select('COUNT(o.id)')
->from('DRPAdminBundle:Log', 'o')
->where($queryBuilder->expr()->gte('o.last_updated', ':start'))
->setParameter('start', new \DateTime('- 7 days'))
->getQuery()
->getSingleScalarResult();
Текущая неделя означает все дни, начиная от 36 недели, например? Или только последние семь дней? – stevenll
Текущая неделя означает семь дней –