private function executeDeletions(ClassMetadata $class, array $documents, array $options = array())
{
$persister = $this->getDocumentPersister($class->name);
foreach ($documents as $oid => $document) {
if (!$class->isEmbeddedDocument) {
$persister->delete($document, $options);
}
unset($this->documentDeletions[$oid], $this->documentIdentifiers[$oid], $this->originalDocumentData[$oid]);
// Clear snapshot information for any referenced PersistentCollection
// http://www.doctrine-project.org/jira/browse/MODM-95
foreach ($class->associationMappings as $fieldMapping) {
if (isset($fieldMapping['type']) && $fieldMapping['type'] === ClassMetadata::MANY) {
$value = $class->reflFields[$fieldMapping['fieldName']]->getValue($document);
if ($value instanceof PersistentCollectionInterface) {
$value->clearSnapshot();
}
}
}
// Document with this $oid after deletion treated as NEW, even if the $oid
// is obtained by a new document because the old one went out of scope.
$this->documentStates[$oid] = self::STATE_NEW;
$this->lifecycleEventManager->postRemove($class, $document);
}
}