我發現了一個問題,因爲我有 - Symfony2 + Doctrine2 is not caching results of joined entities,但答案沒有幫助,因爲我使用Sf 2.3和Doctrine 2.3.6 。另外,我不使用APC,而是使用MemCache進行查詢和結果緩存。Symfony 2.3和Doctrine 2.2 + Memcache沒有緩存多對多加入關係
config.yml
doctrine:
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
query_cache_driver:
type: memcache
host: "%result_memcache_host%"
port: "%result_memcache_port%"
instance_class: Memcache
result_cache_driver:
type: memcache
host: "%result_memcache_host%"
port: "%result_memcache_port%"
instance_class: Memcache
在控制器:
$rs = $this->getEM()
->getRepository('MainBundle:Channels')
->findByIdFullData($id)
->useResultCache(true, 900, 'channel' . $id)
->getOneOrNullResult();
在倉庫:
public function findByIdFullData($id)
{
$rs = $this
->createQueryBuilder('c')
->select('c', 'al')
->leftJoin('c.audioLanguage', 'al')
->where('c.id = :id')
->andWhere('c.active = 1')
->setParameter('id', $id);
return $rs->getQuery();
}
audioLanguage
是渠道,語言和每一次我得到的查詢時間之間的多對多關係嘗試訪問它在樹枝或撥打DB
什麼可能是錯的?
謝謝
對不起,混亂,我使用唯一的緩存名稱名稱,只是在問題中清除了一些不必要的代碼(現在編輯):)根據您的建議設置水化模式也不會改變任何內容。順便說一下,我使用了來自Doctrine擴展的Translatable,並且在那裏設置了Object水化。 – CRONUS 2014-12-05 08:52:06
看看我的其他答案:http://stackoverflow.com/questions/27169763/symfony-2-3-gedmo-doctrine-extensions-translatable-caching/27173280#27173280 – 2014-12-05 09:09:30
我不認爲這是相關的。即使沒有可翻譯的多對多關係也不會被緩存。 – CRONUS 2014-12-05 10:00:32