Doctrine\ODM\PHPCR\UnitOfWork::cascadeMerge PHP Method

cascadeMerge() private method

Cascades a merge operation to associated entities.
private cascadeMerge ( ClassMetadata $class, object $document, object $managedCopy, array &$visited )
$class Doctrine\ODM\PHPCR\Mapping\ClassMetadata
$document object
$managedCopy object
$visited array
    private function cascadeMerge(ClassMetadata $class, $document, $managedCopy, array &$visited)
    {
        foreach (array_merge($class->referenceMappings, $class->referrersMappings) as $fieldName) {
            $mapping = $class->mappings[$fieldName];
            if (!($mapping['cascade'] & ClassMetadata::CASCADE_MERGE)) {
                continue;
            }
            $related = $class->reflFields[$fieldName]->getValue($document);
            if ($related instanceof Collection || is_array($related)) {
                if ($related instanceof PersistentCollection) {
                    // Unwrap so that foreach () does not initialize
                    $related = $related->unwrap();
                }
                foreach ($related as $relatedDocument) {
                    $this->doMerge($relatedDocument, $visited, $managedCopy, $mapping);
                }
            } elseif ($related !== null) {
                $this->doMerge($related, $visited, $managedCopy, $mapping);
            }
        }
    }
UnitOfWork