Chcę móc pobrać istniejącą wersję obiektu, aby móc go porównać z najnowszą wersją. Na przykład. Edycja pliku, chcę wiedzieć, czy wartość zmieniła się od bycia w DB.Jak zatrzymać Doctrine 2 przed buforowaniem wyniku w 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"
Czy ktoś wie, jak mogę obejść to buforowanie?
Pyszne, "odczep" jest idealne. –
Dzięki za to. Szybka wskazówka - jeśli chcesz odłączyć wszystkie jednostki (np. W testach nieizolowanych), możesz użyć '$ entityManager-> clear()'. – richsage
Kolejną rzeczą wartą obejrzenia jest to, czy masz otwartą transakcję. Jeśli wykonałeś '$ entityManager-> beginTransaction()', upewnij się, że zamknąłeś transakcję (np. '$ EntityManager-> rollback()') przed próbą wyczyszczenia menedżera encji. Otwarta transakcja wymusi spójny, dlatego nie aktualizowany, widok bazy danych. – stanhope