entityManagerがflush
を実行し、このフラッシュが例外をスローしたとき。教義のエンティティ・マネージャは、この例外を受け取り、作業単位をクリアし、mark the connection
を閉じてロールバック(https://github.com/doctrine/doctrine2/blob/v2.5.6/lib/Doctrine/ORM/UnitOfWork.php#L412-L417)します。フラッシュの失敗後にDoctrine接続を復元する
私は接続を復元する必要がありますが、私はどのように処理するか困惑しているのEntityManagerで$this->closed = false
を行うと方法がないよう、この私はこれをマークする別のエンティティをflush
できflush
を失敗した後、それはデータベースの特定ににマークします失敗したタスク!また、以前のものが失敗したときに複数のタスクを実行することはできません。もう1つは、entityManagerを使用するときには実行できません。
TL; DRしたがって、フラッシュが失敗した後で接続を復元するにはどうすればよいですか?私はそれが閉鎖とマークされているだけで接続されているが、私はReflectionやカスタムエンティティマネージャのような何かを使用して接続を復元したくない。
これは確かに可能です。少し助けてくれません。例外がスローされると、エンティティマネージャを使い続ける方法はありません。それに応じてダウン投票。 – Cerad
こんにちは@Cerad私は私のコードとその仕事でresetManagerを使用して私は小さなexempleを置くために私の答えを編集するので、例外スロー後にgetManagerを使用することができないことを証明するドキュメンテーションを提供することができます –
それはパースするのは少し難しいです元の質問ですが、私は彼が新しいエンティティマネージャを望んでいないと確信しています。彼が応答するかどうかを見てみましょう。 – Cerad