public static function save(AbstractEntity $entity, array $options = array()) { $collection = self::getCollection(); $entity->validate(); self::callPreSaveHook($entity); $entityToSave = $entity->toArray(); try { $collection->save($entityToSave, $options); $entity->setField('_id', $entityToSave['_id']); self::callPostSaveHook($entity); } catch (\Exception $e) { throw new MapperException($e->getMessage(), $e->getCode(), $e->getPrevious()); } return $entity; }