Clone entities on delete to preserve ids
This commit is contained in:
parent
514e63f26f
commit
720917f609
|
@ -195,17 +195,20 @@ class Listener implements EventSubscriber
|
|||
$this->scheduledForUpdate[] = $entity;
|
||||
} else {
|
||||
// Delete if no longer indexable
|
||||
$this->scheduledForDeletion[] = $entity;
|
||||
$this->scheduledForDeletion[] = clone $entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete objects preRemove instead of postRemove so that we have access to the id
|
||||
*/
|
||||
public function preRemove(EventArgs $eventArgs)
|
||||
{
|
||||
$entity = $eventArgs->getEntity();
|
||||
|
||||
if ($entity instanceof $this->objectClass) {
|
||||
$this->scheduledForDeletion[] = $entity;
|
||||
$this->scheduledForDeletion[] = clone $entity;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -133,7 +133,9 @@ abstract class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
$listener = $this->createListener($persister, get_class($entity), array());
|
||||
$listener->preRemove($eventArgs);
|
||||
|
||||
$this->assertEquals($entity, current($listener->scheduledForDeletion));
|
||||
$scheduledClone = current($listener->scheduledForDeletion);
|
||||
$this->assertEquals($entity, $scheduledClone);
|
||||
$this->assertNotSame($entity, $scheduledClone);
|
||||
|
||||
$persister->expects($this->once())
|
||||
->method('deleteMany')
|
||||
|
@ -164,7 +166,9 @@ abstract class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
$listener = $this->createListener($persister, get_class($entity), array(), 'identifier');
|
||||
$listener->preRemove($eventArgs);
|
||||
|
||||
$this->assertEquals($entity, current($listener->scheduledForDeletion));
|
||||
$scheduledClone = current($listener->scheduledForDeletion);
|
||||
$this->assertEquals($entity, $scheduledClone);
|
||||
$this->assertNotSame($entity, $scheduledClone);
|
||||
|
||||
$persister->expects($this->once())
|
||||
->method('deleteMany')
|
||||
|
|
Loading…
Reference in a new issue