您好我想缓存查询结果。我已经:
$now = time();
$lastMonth = 30*24*3600;
$period = $now-$lastMonth;
$qb=$this->_em->createQueryBuilder()
->select('s')
->addSelect('u')
->addSelect('COUNT(s.id) AS suggestedCount')
->from('WallBundle:Status', 's')
->innerJoin('s.user', 'u')
->where('s.time >= :period')
->andWhere('s.suggested_status = true')
->groupBy('s.user')
->setParameter('period', $period)
->orderBy('suggestedCount', 'DESC')
->setMaxResults(10)
;
$query=$qb->getQuery();
$query->useResultCache(true,30800,'elite10');
$query->useQueryCache(true);
return $query->getResult();
但它仍然没有缓存。当我删除
"->where('s.time >= :period')"
和
->setParameter('period', $period)
它有效...所以..问题在哪里?
答案 0 :(得分:1)
您正在使用查询缓存($query->useQueryCache(true);
),但您正在构建一个使用每毫秒($period = $now-$lastMonth;
)更改的参数的查询。因此,没有两个查询是相同的,无法缓存。如果您需要,请将参数舍入为x小时。