创建Doctrine查询

时间:2014-06-17 02:05:31

标签: symfony doctrine-orm

我有我的实体条目,并希望返回过去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();

1 个答案:

答案 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);