Funciona bien:
$em = $this->getDoctrine()->getManager(); $em->getConfiguration()->getResultCacheImpl()->deleteAll();
pero:
$em->getConfiguration()->getResultCacheImpl()->deleteByPrefix('contract_');
Esto me dice que el método no existe. Se que no existe porque me fije en el archivo del vendor de Doctrine y no está, pero se supone que en el Doctrine/ORM 2.5 si venga. ¿Qué puedo hacer para que me funcione el borrado por prefijo?
Gracias de antemano.
Respuestas
Según la documentación, ese método debería funcionarte sin problemas: https://github.com/doctrine/orm-documentation/blob/master/en/reference/caching.rst#deleting
Prueba a ejecutar este método en la consola, que es equivalente a lo que quieres hacer, a ver si te funciona:
$ php app/console doctrine:clear-cache --result --prefix=contract_
@javiereguiluz
No, no me funciona, me pone:
[Symfony\Component\Console\Exception\CommandNotFoundException] Command "doctrine:clear-cache" is not defined. pero me pone q existe doctrine:cache:clear-result doctrine:cache:clear-query-region doctrine:cache:clear-entity-region
Ya he buscado en mil lugares y es por gusto, ese problema no es que me atormente pero ya llevo rato arrastrándolo porque hasta ahora le doy borrar a todo y quería ser mas preciso en el borrado de la cache. Indagué en el código y encontré lo siguiente en el fichero vendor/doctrine/common/UPGRADE_TO_2_2
:
Cache Changes - **Dropped the support** to the following functions of all cache providers: **- CacheProvider::deleteByWildcard - CacheProvider::deleteByRegEx - CacheProvider::deleteByPrefix - CacheProvider::deleteBySuffix** - CacheProvider::deleteAll will not remove ALL entries, it will only mark them as invalid - CacheProvider::flushAll will remove ALL entries, namespaced or not - Added support to MemcachedCache - Added support to WincacheCache
Seguiré avanzando en la aplicación y si doy o implemento una solución la comparto.
@jdvellon
Disculpa pero te dije mal el nombre del comando. Debería ser doctrine:cache:clear-result
. En cualquier caso, he mirado la ayuda del comando y no incluye esa opción, así que si que parece que han eliminado esas funcionalidades de la caché de Doctrine.
@javiereguiluz