symfony2 doctrine缓存查询内部时间

时间:2013-08-31 13:51:54

标签: caching symfony doctrine

您好我想缓存查询结果。我已经:

    $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)

它有效...所以..问题在哪里?

1 个答案:

答案 0 :(得分:1)

您正在使用查询缓存($query->useQueryCache(true);),但您正在构建一个使用每毫秒($period = $now-$lastMonth;)更改的参数的查询。因此,没有两个查询是相同的,无法缓存。如果您需要,请将参数舍入为x小时。