我有我的实体条目,并希望返回过去15天的日期和条目数的计数,并在图表中显示数据。
然而,DQL写作在某种程度上未能带来我想要的结果,如果有人可能会提供帮助,我会很感激。
这是我想在mysql中实现的查询
SELECT count(*) as total, DATE_FORMAT(e.created_at, '%Y-%m-%d') as date FROM entries e WHERE e.created_at BETWEEN DATE_SUB(CURDATE(),INTERVAL 15 DAY) AND CURDATE() GROUP BY date
这就是我所拥有的:
$sql = "SELECT count(*) as total, DATE_FORMAT(e.created_at, '%Y-%m-%d') as date FROM entries e WHERE e.created_at BETWEEN DATE_SUB(CURDATE(),INTERVAL 15 DAY) AND CURDATE() GROUP BY date";
$q = $this->em->createQuery($sql);
$registered = $query->getResult();
答案 0 :(得分:1)
试试这个:
$ago = new \DateTime('15 days ago');
$now = new \DateTime('now');
$qb = $this->em->createQueryBuilder();
$qb->select('e.created_at');
$qb->from('entries', 'e');
$qb->where('e.created_at BETWEEN :ago AND :now')
$qb->setParameter('ago', $ago->format('Y-m-d'))
$qb->setParameter('now', $now->format('Y-m-d'));
// get results
$dates = $qb->getQuery()->getArrayResult();
请注意,format()
方法应与您的列日期格式匹配
$dates
是一个包含匹配日期的数组。如果您想知道计数,那么您可以:
$count = count($dates);