*/ class MongoDBPurger implements PurgerInterface { /** DocumentManager instance used for persistence. */ private $dm; /** * Construct new purger instance. * * @param DocumentManager $dm DocumentManager instance used for persistence. */ public function __construct(DocumentManager $dm = null) { $this->dm = $dm; } /** * Set the DocumentManager instance this purger instance should use. * * @param DocumentManager $dm */ public function setDocumentManager(DocumentManager $dm) { $this->dm = $dm; } /** * Retrieve the DocumentManager instance this purger instance is using. * * @return \Doctrine\ODM\MongoDB\DocumentManager */ public function getObjectManager() { return $this->dm; } /** @inheritDoc */ public function purge() { $metadatas = $this->dm->getMetadataFactory()->getAllMetadata(); foreach ($metadatas as $metadata) { if ( ! $metadata->isMappedSuperclass) { $this->dm->getDocumentCollection($metadata->name)->drop(); } } $this->dm->getSchemaManager()->ensureIndexes(); } }