Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entity scheduled for deletion and original entity retrieved from database points on the same object since 2.19.5 #11480

Open
AirBair opened this issue May 28, 2024 · 3 comments

Comments

@AirBair
Copy link

AirBair commented May 28, 2024

BC Break Report

Q A
BC Break yes ?
Version 2.19.5

Summary

Hi Doctrine team,

When upgrading from doctrine/orm 2.19.4 to 2.19.5, a behavior changed when retrieving an entity scheduled for deletion from the database before the actual flush.

Before 2.19.5, the entity scheduled for deletion and the entity retrieved from the database were 2 different objects with the previous state in the last one, which allowed us to know what was in the entity (e.g. the parent relation in my case), now it seems to be the same object.

It seems related to this PR : #11428. If I revert the changes locally, i got back the previous behavior.

Previous behavior

doctrine_orm_2 9 4

Current behavior

doctrine_orm_2 9 5

How to reproduce

#[AsDoctrineListener(event: Events::onFlush)]
class DummyListener
{
    public function onFlush(OnFlushEventArgs $eventArgs): void
    {
        $objectManager = $eventArgs->getObjectManager();
        $uow = $objectManager->getUnitOfWork();

        foreach ($uow->getScheduledEntityDeletions() as $entity) {
                $originalEntity = $objectManager->getRepository($entity::class)->find($entity->getId());
                dump(['Saved Entity' => $entity]);
                dump(['Original Entity' => $originalEntity]);
        }
    }

Same result if using $uow->getOriginalEntityData($entity) instead of direct call to the database to retrieve original data.

I've seen the issue #11448, but i don't think that's exactly the same problem.

Any toughts ?

@AirBair AirBair changed the title Entity scheduled for deletion and original entity retrieved from database point on the same object sinve 2.9.5 Entity scheduled for deletion and original entity retrieved from database points on the same object since 2.9.5 May 28, 2024
@greg0ire
Copy link
Member

I think you mean 2.19.4 to 2.19.5

Cc @xificurk

@AirBair AirBair changed the title Entity scheduled for deletion and original entity retrieved from database points on the same object since 2.9.5 Entity scheduled for deletion and original entity retrieved from database points on the same object since 2.19.5 May 28, 2024
@AirBair
Copy link
Author

AirBair commented May 28, 2024

I think you mean 2.19.4 to 2.19.5

Cc @xificurk

Yes indeed, corrected.

@AirBair
Copy link
Author

AirBair commented Aug 13, 2024

Friendly ping @xificurk

I still got the same result by upgrading to v3 and I can't find a way around the problem.

FI, $uow->getOriginalEntityData($entity) give also the same reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants