/** * To commit all referenced Objects by its managers we need to sort them. * * @throws Exception\UnitOfWorkException * @return array */ public function getScheduledReferencesByManager() { $managedList = array(); $scheduledLists = array($this->insertReferences, $this->updateReferences, $this->removeReferences); foreach ($scheduledLists as $scheduleList) { foreach ($scheduleList as $oid => $fields) { if (!isset($this->objects[$oid])) { throw new UnitOfWorkException('Can not find the object for oid %s', $oid); } foreach ($fields as $fieldName => $referencedObject) { $object = $this->objects[$oid]; $manager = $this->objectAdapterManager->getManager($object, $fieldName); $managerClass = get_class($manager); if (!isset($managedList[$managerClass])) { $managedList[$managerClass]['manager'] = $manager; $managedList[$managerClass]['referenced-objects'] = array(); } $managedList[$managerClass]['referenced-objects'][] = $referencedObject; } } } return $managedList; }
/** * @expectedException \Doctrine\ORM\ODMAdapter\Exception\MappingException * @expectedExceptionMessage No reference mapping on stdClass */ public function testGetManagerObjectWithoutTypeThrowsException() { $this->objectAdapterManager->getManager(new \stdClass(), 'test-field'); }