यह कैश को साफ़ करने के तरीके पर डॉक्टर 2 पर प्रलेखन के अनुसार है। मुझे यह भी यकीन नहीं है कि आप यही चाहते हैं, लेकिन मुझे लगता है कि यह कोशिश करने के लिए कुछ है।
डॉक्ट्राइन 2 के कैश ड्राइवर में कैश किए गए प्रविष्टियों को हटाने के विभिन्न स्तर हैं।
आप आप ऐसा करेंगे चाहते हैं
तो सभी को नष्ट करने के, प्रत्यक्ष आईडी द्वारा नष्ट कर सकते हैं उपसर्ग और सादे कैश में सभी मूल्यों को हटा कर एक regex का उपयोग कर, प्रत्यय द्वारा:
$deleted = $cacheDriver->deleteAll();
और उपसर्ग से नष्ट करने के लिए, तुम क्या चाहते हैं:
$deleted = $cacheDriver->deleteByPrefix('users_');
मुझे यकीन है कि के लिए खुदाई करने के लिए कैसे Doctrine2 नाम उनके कैश आईडी हालांकि, ताकि आप होगा नहीं हूँ। कैश हटाने पर
सूचना यहाँ पाया जाता है: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#deleting
कैश ड्राइवर पाने के लिए, आप निम्न कर सकते। दस्तावेज़ों में इसका वर्णन नहीं किया गया था, इसलिए मैंने बस कोड के माध्यम से पता लगाया।
मैं आप इस उदाहरण में एक इकाई के प्रबंधक उदाहरण है यह सोचते हैं हूँ:
$config = $em->getConfiguration(); //Get an instance of the configuration
$queryCacheDriver = $config->getQueryCacheImpl(); //Gets Query Cache Driver
$metadataCacheDriver = $config->getMetadataCacheImpl(); //You probably don't need this one unless the schema changed
वैकल्पिक रूप से, मुझे लगता है कि आप रजिस्ट्री वर्ग के कुछ प्रकार में cacheDriver उदाहरण बचाने के लिए और इसे उस तरह से पुनः प्राप्त कर सकते हैं। लेकिन आपकी वरीयता पर निर्भर करता है। व्यक्तिगत रूप से मैं पंजीकरण पर निर्भर नहीं होने की कोशिश करता हूं।
एक और चीज जो आप कर सकते हैं वह बताती है कि आप परिणाम कैश का उपयोग न करने के लिए निष्पादित कर रहे हैं। दोबारा मुझे नहीं लगता कि यह वही है जो आप चाहते हैं, लेकिन इसे वहां फेंक दें। मुख्य रूप से ऐसा लगता है कि आप क्वेरी कैश को पूरी तरह से बंद कर सकते हैं। ऐसा तब तक होता है जब तक कि यह केवल कुछ विशिष्ट प्रश्न न हो जहां आप कैश का उपयोग नहीं करना चाहते हैं।
यह उदाहरण डॉक्स से है: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#result-cache
$query = $em->createQuery('select u from \Entities\User u');
$query->useResultCache(false); //Don't use query cache on this query
$results = $query->getResult();
क्या आप सिर्फ कैश को पूरी तरह बंद करना चाहते हैं? मुझे पता है कि आप $ हटाए गए = $ कैश ड्राइव के साथ कैश साफ़ कर सकते हैं-> deleteAll(); – Gohn67
@ गोह्न 67: मैं कैशड्राइवर कैसे प्राप्त करूं? –