Вопрос о Doctirne, но я думаю, что это может быть распространено на многие ORM.
Detach:
Сущность отделяется от EntityManager и, следовательно, больше не управляется путем вызова метода
EntityManager#detach($entity)
на нем или путем каскадируя операцию отсоединения к ней. Изменения, внесенные в отдельные субъект, если таковой имеется (включая удаление объекта), не будет синхронизируется с базой данных после отсоединения объекта.
Merge:
Объединяющие объекты относятся к объединению (обычно отделяемых) объектов в контексте EntityManager, чтобы они стали управляемыми еще раз. Чтобы объединить состояние объекта в EntityManager, используйте
EntityManager#merge($entity)
. Состояние переданного объекта будут объединены в управляемую копию этого объекта, и эта копия будет впоследствии возвращаются.
Я понимаю (почти), как это работает, но вопрос в том, почему нужно отделить/слияния? Можете ли вы привести пример/сценарий, когда эти две операции могут быть использованы/необходимы?