Doctrine\ODM\CouchDB\UnitOfWork::cascadeMerge PHP Метод

cascadeMerge() приватный Метод

Cascades a merge operation to associated entities.
private cascadeMerge ( object $document, object $managedCopy, array &$visited )
$document object
$managedCopy object
$visited array
    private function cascadeMerge($document, $managedCopy, array &$visited)
    {
        $class = $this->dm->getClassMetadata(get_class($document));
        foreach ($class->associationsMappings as $assoc) {
            if ($assoc['cascade'] & ClassMetadata::CASCADE_MERGE == 0) {
                continue;
            }
            $relatedDocuments = $class->reflFields[$assoc['fieldName']]->getValue($document);
            if ($relatedDocuments instanceof Collection) {
                if ($relatedDocuments instanceof PersistentCollection) {
                    // Unwrap so that foreach() does not initialize
                    $relatedDocuments = $relatedDocuments->unwrap();
                }
                foreach ($relatedDocuments as $relatedDocument) {
                    $this->doMerge($relatedDocument, $visited, $managedCopy, $assoc);
                }
            } else {
                if ($relatedDocuments !== null) {
                    $this->doMerge($relatedDocuments, $visited, $managedCopy, $assoc);
                }
            }
        }
    }