private function cascadeRefresh(ClassMetadata $class, $document, &$visited)
{
foreach (array_merge($class->referenceMappings, $class->referrersMappings) as $fieldName) {
$mapping = $class->mappings[$fieldName];
if (!($mapping['cascade'] & ClassMetadata::CASCADE_REFRESH)) {
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->doRefresh($relatedDocument, $visited);
}
} elseif ($related !== null) {
$this->doRefresh($related, $visited);
}
}
}