Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Por qué no me funciona el método deleteByPrefix?

15 de febrero de 2016

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

#1

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

17 febrero 2016, 9:01
#2

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

17 febrero 2016, 18:00
#3

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

17 febrero 2016, 18:08