2012-12-24 111 views
0

我的問題是非常愚蠢的,但我沒有找到Doctrine 2 dbal和緩存管理器的例子。Doctrine 2 dbal和緩存

我不能在dbal查詢中使用useResultCache方法嗎?

$q = \Zend_Registry::get('em')->getConnection()->createQueryBuilder() 
->select('f.idprd, f.lprd') 
->from('tb_prd', 'f') 
->andWhere($q->expr()->eq('f.niveau', $iNiveau)) 
->orderBy('f.niveau') 

非常感謝!

回答

1

我發現:

https://github.com/doctrine/dbal-documentation/blob/master/en/reference/caching.rst

它的工作:

public static function getList() { 
    $q = \Zend_Registry::get('em')->getConnection()->createQueryBuilder() 
     ->select("np.*") 
     ->from('tb_niv_prd', 'np') 
     ->andWhere("np.lniveau IS NOT NULL") 
     ->andWhere("np.niveau <> 10") 
     ->addOrderBy('np.lniveau', 'ASC'); 

    $stmt = \Zend_Registry::get('em')->getConnection()->executeCacheQuery(
     $q->getSql(), array(), array(), new \Doctrine\DBAL\Cache\QueryCacheProfile(0, 
      "TbNivPrdRepository_getList")); 
    $aResult = $stmt->fetchAll(\PDO::FETCH_ASSOC); 
    $stmt->closeCursor(); 
    return $aResult; 
} 
+0

哇感謝!我認爲這是不可能的。但是我想知道每次構建查詢是否已經帶來不必要的開銷。 Doctrine的API相當滯後一些。 – ChocoDeveloper