Doctrine\ORM\UnitOfWork::executeDeletions PHP Method

executeDeletions() private method

Executes all entity deletions for entities of the specified type.
private executeDeletions ( Doctrine\ORM\Mapping\ClassMetadata $class )
$class Doctrine\ORM\Mapping\ClassMetadata
    private function executeDeletions($class)
    {
        $className = $class->name;
        $persister = $this->getEntityPersister($className);
                
        $hasLifecycleCallbacks = isset($class->lifecycleCallbacks[Events::postRemove]);
        $hasListeners = $this->evm->hasListeners(Events::postRemove);
        
        foreach ($this->entityDeletions as $oid => $entity) {
            if (get_class($entity) == $className || $entity instanceof Proxy && $entity instanceof $className) {
                $persister->delete($entity);
                unset(
                    $this->entityDeletions[$oid],
                    $this->entityIdentifiers[$oid],
                    $this->originalEntityData[$oid],
                    $this->entityStates[$oid]
                    );
                // Entity with this $oid after deletion treated as NEW, even if the $oid
                // is obtained by a new entity because the old one went out of scope.
                //$this->entityStates[$oid] = self::STATE_NEW;
                if ( ! $class->isIdentifierNatural()) {
                    $class->reflFields[$class->identifier[0]]->setValue($entity, null);
                }

                if ($hasLifecycleCallbacks) {
                    $class->invokeLifecycleCallbacks(Events::postRemove, $entity);
                }
                if ($hasListeners) {
                    $this->evm->dispatchEvent(Events::postRemove, new LifecycleEventArgs($entity, $this->em));
                }
            }
        }
    }