private function cascadeRemove(ClassMetadata $class, $document, &$visited)
{
foreach (array_merge($class->referenceMappings, $class->referrersMappings) as $fieldName) {
$mapping = $class->mappings[$fieldName];
if (!($mapping['cascade'] & ClassMetadata::CASCADE_REMOVE)) {
continue;
}
$related = $class->reflFields[$fieldName]->getValue($document);
if ($related instanceof Collection || is_array($related)) {
// If its a PersistentCollection initialization is intended! No unwrap!
foreach ($related as $relatedDocument) {
if (null !== $relatedDocument) {
$this->doRemove($relatedDocument, $visited);
}
}
} elseif ($related !== null) {
$this->doRemove($related, $visited);
}
}
// remove is cascaded to children automatically on PHPCR level
}