エンティティの既存のバージョンを取得して、最新のバージョンと比較できるようにしたいと考えています。例えば。ファイルを編集して、DBに入ってから値が変更されたかどうかを知りたい。Symfony 2でDoctrine 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"
どのように私はこのキャッシュを回避することができます知っていますか?
おいしい、「デタッチ」は完璧です。 –
ありがとうございます。クイックヒント - すべてのエンティティを分離する必要がある場合(非絶縁テストなど)、 '$ entityManager-> clear()'を使うことができます。 – richsage
もう1つは、取引を開いているかどうかです。 '$ entityManager-> beginTransaction()'を実行したなら、エンティティマネージャをクリアしようとする前にトランザクションを閉じてください(例えば '$ entityManager-> rollback()')。開いているトランザクションは、データベースの一貫性のある、したがって更新されていないビューを強制します。 – stanhope