Deseo poder recuperar la versión existente de una entidad para poder compararla con la última versión. P.ej. Editando un archivo, quiero saber si el valor ha cambiado desde que estaba en el DB.¿Cómo detener Doctrine 2 desde el almacenamiento en caché de un resultado en Symfony 2?
$entityManager = $this->get('doctrine')->getEntityManager();
$postManager = $this->get('synth_knowledge_share.manager');
$repository = $entityManager->getRepository('KnowledgeShareBundle:Post');
$post = $repository->findOneById(1);
var_dump($post->getTitle()); // This would output "My Title"
$post->setTitle("Unpersisted new title");
$existingPost = $repository->findOneById(1); // Retrieve the old entity
var_dump($existingPost->getTitle()); // This would output "Unpersisted new title" instead of the expected "My Title"
¿Alguien sabe cómo puedo evitar este caché?
Delicioso, el 'detach' es perfecto. –
Gracias por esto. Sugerencia rápida: si necesita separar todas las entidades (por ejemplo, en pruebas no aisladas), puede usar '$ entityManager-> clear()'. – richsage
La otra cosa que debe observar aquí es si tiene o no abierta una transacción. Si ha realizado un '$ entityManager-> beginTransaction()', asegúrese de cerrar la transacción (por ejemplo, '$ entityManager-> rollback()') antes de intentar borrar el administrador de entidades. Una transacción abierta obligará a una vista coherente, por lo tanto no actualizada, de la base de datos. – stanhope