我正在使用2.4教條的symfony 2.5項目。如何在Symfony 2.4中緩存doctrine「findOneBy()」查詢與緩存ID和緩存生存期選項?
我想緩存查詢結果與緩存ID和緩存時間,所以我可以刪除緩存結果,只要需要,雖然管理員。
我可以使用「createQueryBuilder()」選項緩存查詢結果。
例子:
$this->createQueryBuilder('some_table')
->select('some_table')
->where('some_table.deleted_date IS NULL')
->getQuery()
->useResultCache(true)
->setResultCacheLifetime(120) //Query Cache lifetime
->setResultCacheId($queryCacheId) //Query Cache Id
->getResult();
但我沒能找到類似的方式chache爲 「findOneBy()」 選項查詢結果。
例子:
$this->findOneBy(array('some_field'=>$some_value));
我要尋找一些妥善的解決辦法,任何的幫助深表感謝。
https://groups.google.com/d/msg/doctrine-user/RIeH8ZkKyEY/HnR7h2p0lCQJ 作爲Ocramius說,你NEDD重寫此方法爲回購協議,如果你想利用高速緩存操作的優勢。 – DonCallisto 2015-02-23 08:54:49
感謝您的回覆。讓我試一下,如果需要的話,會問你更多。 – 2015-02-23 09:07:34
這是我重寫 「findOneBy」 功能在存儲庫中的類 公共函數findOneBy(數組$ criteria_array) { \t \t $查詢= $這 - > createQueryBuilder( 'B') - >選擇( 'B'); \t \t的foreach($ criteria_array爲$的fieldName => $條件){ \t \t \t $查詢 - > andWhere( 「B $的fieldName =:$的fieldName」); \t \t \t $ query-> setParameter(「$ fieldName」,$ criteria); \t \t} \t \t回報$查詢 - > getQuery() \t \t \t - > useResultCache(真) \t \t \t - > setResultCacheLifetime(120) \t \t \t - > setResultCacheId($ queryCacheId) \t \t \t - >的getResult(); } 請檢查並更正我。 當我需要緩存結果時,是否需要覆蓋所有存儲庫中的「find *」函數? – 2015-02-23 10:08:10