コード例 #1
0
 /**
  * @SuppressWarnings(PHPMD.LongVariable)
  *
  * @param PreLoadEventArgs $eventArgs
  * @param string $field
  * @param array $mapping
  */
 protected function preLoadEmbeddedWithDiscriminator(PreLoadEventArgs $eventArgs, $field, $mapping)
 {
     $unhydratedDoc = $eventArgs->getData();
     if (isset($unhydratedDoc[$field])) {
         $documentManager = $eventArgs->getDocumentManager();
         $eventManager = $documentManager->getEventManager();
         if ($mapping['type'] === 'one') {
             $discriminatorFieldValue = $unhydratedDoc[$field][$mapping['discriminatorField']];
             $embeddedClassName = $mapping['discriminatorMap'][$discriminatorFieldValue];
             $targetMetadata = $documentManager->getClassMetadata($embeddedClassName);
             $readEventArgs = $this->getReadEventArgs($targetMetadata, $eventManager);
             if ($readEventArgs->getReject()) {
                 $eventArgs->getData()[$field] = null;
             }
         } else {
             $unhydratedEmbeddedDoc = $unhydratedDoc[$field];
             foreach ($unhydratedEmbeddedDoc as $i => $embeddedDoc) {
                 $discriminatorFieldValue = $embeddedDoc[$mapping['discriminatorField']];
                 $embeddedClassName = $mapping['discriminatorMap'][$discriminatorFieldValue];
                 $targetMetadata = $documentManager->getClassMetadata($embeddedClassName);
                 $readEventArgs = $this->getReadEventArgs($targetMetadata, $eventManager);
                 if ($readEventArgs->getReject()) {
                     $eventArgs->getData()[$field][$i] = null;
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: MODM43Test.php プロジェクト: kovagoz/mongodb-odm
 /** @ODM\PreLoad */
 public function preLoad(PreLoadEventArgs $e)
 {
     $data =& $e->getData();
     if (isset($data['name'])) {
         $e = explode(' ', $data['name']);
         $data['firstName'] = $e[0];
         $data['lastName'] = $e[1];
     }
 }
コード例 #3
0
 public function testGetData()
 {
     $document = new Group('test');
     $dm = $this->dm;
     $data = array('id' => '1234', 'name' => 'test');
     $eventArgs = new PreLoadEventArgs($document, $dm, $data);
     $eventArgsData =& $eventArgs->getData();
     $this->assertEquals('test', $eventArgsData['name']);
     $eventArgsData['name'] = 'alt name';
     $this->assertEquals('alt name', $data['name']);
 }