Doctrine\ORM\UnitOfWork::cascadeRemove PHP Method

cascadeRemove() private method

Cascades the delete operation to associated entities.
private cascadeRemove ( object $entity, array &$visited )
$entity object
$visited array
    private function cascadeRemove($entity, array &$visited)
    {
        $class = $this->em->getClassMetadata(get_class($entity));
        foreach ($class->associationMappings as $assoc) {
            if ( ! $assoc['isCascadeRemove']) {
                continue;
            }
            //TODO: If $entity instanceof Proxy => Initialize ?
            $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity);
            if ($relatedEntities instanceof Collection || is_array($relatedEntities)) {
                // If its a PersistentCollection initialization is intended! No unwrap!
                foreach ($relatedEntities as $relatedEntity) {
                    $this->doRemove($relatedEntity, $visited);
                }
            } else if ($relatedEntities !== null) {
                $this->doRemove($relatedEntities, $visited);
            }
        }
    }