Điều này theo tài liệu trên Doctrine2 về cách xóa bộ nhớ cache. Tôi thậm chí không chắc chắn đây là những gì bạn muốn, nhưng tôi đoán đó là một cái gì đó để thử.
Trình điều khiển bộ nhớ cache của Doctrine2 có các mức xóa các mục được lưu trong bộ nhớ cache khác nhau.
Bạn có thể xóa bằng id trực tiếp, sử dụng một regex, bởi hậu tố, bởi tiền tố và đồng bằng cách xóa tất cả các giá trị trong bộ nhớ cache
Vì vậy, để xóa tất cả các bạn muốn làm:
$deleted = $cacheDriver->deleteAll();
Và xóa bởi tiền tố, bạn muốn làm:
$deleted = $cacheDriver->deleteByPrefix('users_');
tôi không chắc chắn như thế nào Doctrine2 tên id bộ nhớ cache của họ mặc dù, vì vậy bạn sẽ phải đào cho điều đó.
Thông tin về xóa bộ nhớ cache được tìm thấy ở đây: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#deleting
Để có được trình điều khiển bộ nhớ cache, bạn có thể làm như sau. Nó không được mô tả trong các tài liệu, vì vậy tôi chỉ truy tìm thông qua mã một chút.
Tôi giả sử bạn có một thể hiện quản lý thực thể trong ví dụ này:
$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
Ngoài ra, tôi đoán bạn có thể tiết kiệm dụ cacheDriver trong một số loại lớp Registry và lấy nó như vậy. Nhưng tùy thuộc vào sở thích của bạn. Cá nhân tôi cố gắng không phụ thuộc vào Đăng ký quá nhiều.
Một điều khác bạn có thể làm là cho biết truy vấn bạn đang thực hiện để không sử dụng bộ nhớ cache kết quả. Một lần nữa tôi không nghĩ rằng đây là những gì bạn muốn, nhưng chỉ cần ném nó ra khỏi đó. Chủ yếu có vẻ như bạn cũng có thể tắt bộ nhớ cache truy vấn hoàn toàn. Đó là trừ khi nó chỉ là một vài truy vấn cụ thể mà bạn không muốn sử dụng bộ nhớ cache.
Ví dụ này là từ các tài liệu: 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();
Bạn chỉ muốn tắt hoàn toàn bộ nhớ cache? Tôi biết bạn có thể xóa bộ nhớ cache với $ deleted = $ cacheDriver-> deleteAll(); – Gohn67
@ Gohn67: Làm thế nào để tôi nhận được CacheDriver? –