質問は Doctrine に関するものですが、多くの ORM に拡張できると思います。
切り離す:
エンティティは EntityManager から切り離されているため、そのエンティティで
EntityManager#detach($entity)
メソッドを呼び出したり、切り離し操作をカスケードしたりしても管理されなくなります。デタッチされたエンティティに加えられた変更 (エンティティの削除を含む) がある場合、エンティティがデタッチされた後はデータベースに同期されません。
マージ:
エンティティのマージとは、(通常は切り離された) エンティティを EntityManager のコンテキストにマージして、再び管理されるようにすることです。エンティティの状態を EntityManager にマージするには、
EntityManager#merge($entity)
メソッドを使用します。渡されたエンティティの状態は、このエンティティのマネージド コピーにマージされ、その後、このコピーが返されます。
私はこれがどのように機能するかを(ほぼ)理解していますが、問題は、エンティティを切り離したりマージしたりする必要があるのはなぜですか?これらの 2 つの操作を使用できる/必要な場合の例/シナリオを教えてください。