Esto es de acuerdo con la documentación en Doctrine2 sobre cómo borrar la caché. Ni siquiera estoy seguro de que esto sea lo que quieres, pero supongo que es algo que debes intentar.
El controlador de caché de Doctrine2 tiene diferentes niveles de eliminación de entradas en caché.
Puede eliminar el ID directa, usando una expresión regular, por sufijo, por prefijo y llana supresión de todos los valores en la memoria caché
Así que para eliminar todo lo que haría:
$deleted = $cacheDriver->deleteAll();
Y eliminar por prefijo, que haría:
$deleted = $cacheDriver->deleteByPrefix('users_');
no estoy seguro de cómo los nombres Doctrine2 sus identificaciones caché aunque, por lo que tendría que cavar para eso.
información sobre cómo borrar la memoria caché se encuentra aquí: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#deleting
para obtener el controlador de caché, puede hacer lo siguiente. No fue descrito en los documentos, así que simplemente rastreé el código un poco.
Estoy suponiendo que tiene una instancia gestor de la entidad en este ejemplo:
$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
Alternativamente, supongo que se podría guardar la instancia cacheDriver en algún tipo de clase Registry y recuperar de esa manera. Pero depende de tu preferencia. Personalmente trato de no depender demasiado de Registros.
Otra cosa que puede hacer es decirle a la consulta que está ejecutando que no use el caché de resultados. Una vez más, no creo que esto sea lo que quieres, sino simplemente tirarlo por ahí. Principalmente parece que también deberías desactivar el caché de consultas. Eso es a menos que sean solo unas pocas consultas específicas en las que no desee usar el caché.
Este ejemplo es de la documentación: 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();
¿Simplemente desea apagar la caché por completo? Sé que puedes borrar el caché con $ deleted = $ cacheDriver-> deleteAll(); – Gohn67
@ Gohn67: ¿Cómo obtengo el CacheDriver? –