Removing an entity that is contained in a m2m association fails when flush()
is called twice
#10485
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Here is a failing test for #10483.
When an entity is removed that is part of a many-to-many collection, that collection will be updated during the
flush()
operation to no longer contain the entity.However, afterwards the collection will be in a dirty state and the internal snapshot still contains the removed entity.
That causes the collection to be processed again when
flush()
is called another time. This time, the ORM assumes the entity has been removed from the collection. It will try to build aDELETE
operation but fails since the entity (from the snapshot) is no longer in the identity map.The error message is
Doctrine\ORM\EntityNotFoundException: Unable to find "..." entity identifier associated with the UnitOfWork
.