コード例 #1
0
ファイル: ZendDbSqlMapper.php プロジェクト: conor123/ZF2Demo
 /**
  * @param PostInterface $postObject
  * @return PostInterface
  * @throws \Exception
  */
 public function save(PostInterface $postObject)
 {
     //
     $postData = $this->hydrator->extract($postObject);
     unset($postData['id']);
     if ($postObject->getId()) {
         # code...
         $action = new Update('posts');
         $action->set($postData);
         $action->where(array('id = ?' => $postObject->getId()));
     } else {
         $action = new Insert('posts');
         $action->values($postData);
     }
     $sql = new Sql($this->dbAdapter);
     $stmt = $sql->prepareStatementForSqlObject($action);
     $result = $stmt->execute();
     if ($result instanceof ResultInterface) {
         # code...
         if ($newId = $result->getGeneratedValue()) {
             # code...
             $postObject->setId($newId);
         }
         return $postObject;
     }
     throw new \Exception("Database eror");
 }
コード例 #2
0
 /**
  * Extract values from an object
  *
  * @param  object $object
  * @throws \Zf2Libs\Stdlib\Extractor\Exception\InvalidArgumentException
  * @return array
  */
 public function extract($object)
 {
     if (!$object instanceof ImageInterface) {
         throw new InvalidArgumentException("Invalid object must be instance of ImageInterface");
     }
     return $this->hydrator->extract($object);
 }
コード例 #3
0
 /**
  * @param PostInterface $postObject
  *
  * @return PostInterface
  * @throws \Exception
  */
 public function save(PostInterface $postObject)
 {
     $postData = $this->hydrator->extract($postObject);
     unset($postData['id']);
     //Neither Insert nor Update needs the ID in the array
     if ($postObject->getId()) {
         //ID present, it's an update
         $action = new Update('post');
         $action->set($postData);
         $action->where(array('id = ?' => $postObject->getId()));
     } else {
         // ID not present, it's an Insert
         $action = new Insert('post');
         $action->values($postData);
     }
     $sql = new Sql($this->dbAdapter);
     $stmt = $sql->prepateStatementForSqlObject($action);
     $result = $stmt->execute();
     if ($result instanceof ResultInterface) {
         if ($newId = $result->getGeneratedValue()) {
             //when a value has been generated, set it on the object
             $postObject->setId($newId);
         }
         return $postObject;
     }
     throw new \Exception("Database error");
 }
コード例 #4
0
 /**
  * Extract values from an object
  *
  * @param  object $object
  * @return array
  */
 public function extract($object)
 {
     $data = $this->wrappedHydrator->extract($object);
     if (array_key_exists('order', $data) && !empty($data['order'])) {
         $data['order_id'] = $data['order']->getId();
         unset($data['order']);
     }
     return $data;
 }
コード例 #5
0
 /**
  * (non-PHPdoc)
  * @see Zend\Stdlib\Hydrator.HydratorInterface::extract()
  */
 public function extract($object)
 {
     /** @var ItemInterface $object */
     if (!$object instanceof ItemInterface) {
         throw new InvalidArgumentException('Can only extract ItemInterface.');
     }
     $data = array();
     $data[self::KEY_ITEM] = $this->itemHydrator->extract($object);
     $data[self::KEY_META] = $this->metaHydrator->extract($object);
     return $data;
 }
コード例 #6
0
 /**
  * @param AbstractEntity $entity
  * @return $this
  */
 public function persist(AbstractEntity $entity)
 {
     $data = $this->hydrator->extract($entity);
     if ($this->hasIdentity($entity)) {
         $this->gateway->update($data, ['id' => $entity->getId()]);
     } else {
         $this->gateway->insert($data);
         $entity->setId($this->gateway->getLastInsertValue());
     }
     return $this;
 }
コード例 #7
0
 /**
  * @param $command
  * @param $entity
  * @param bool $addExtractedEntity
  *
  * @return Result
  */
 protected function createResult($command, $entity, $addExtractedEntity = true)
 {
     $meta = $this->objectManager->getClassMetadata($this->className);
     $identifiers = $meta->getIdentifierValues($entity);
     $result = new Result($command, current($identifiers));
     if (!$addExtractedEntity) {
         return $result;
     }
     $data = $this->hydrator->extract($entity);
     $result->addParams(['item' => $data]);
     return $result;
 }
コード例 #8
0
 public function testHydratingObjects()
 {
     $this->hydrator->addStrategy('entities', new TestAsset\HydratorStrategy());
     $entityA = new TestAsset\HydratorStrategyEntityA();
     $entityA->addEntity(new TestAsset\HydratorStrategyEntityB(111, 'AAA'));
     $entityA->addEntity(new TestAsset\HydratorStrategyEntityB(222, 'BBB'));
     $attributes = $this->hydrator->extract($entityA);
     $attributes['entities'][] = 333;
     $this->hydrator->hydrate($attributes, $entityA);
     $entities = $entityA->getEntities();
     $this->assertCount(3, $entities);
 }
コード例 #9
0
 public function testContextAwarenessExtract()
 {
     $strategy = new TestAsset\HydratorStrategyContextAware();
     $this->hydrator->addStrategy('field2', $strategy);
     $entityB = new TestAsset\HydratorStrategyEntityB('X', 'Y');
     $attributes = $this->hydrator->extract($entityB);
     $this->assertEquals($entityB, $strategy->object);
 }
コード例 #10
0
ファイル: PostMapper.php プロジェクト: qbonaventure/blog
 public function updatePost($values, $postId)
 {
     $values = $this->hydrator->extract($values);
     $encodedValue = json_encode($values);
     $sql = 'SELECT * FROM blog.post_update(:data::json)';
     $stmt = $this->dbAdapter->createStatement($sql);
     $result = $stmt->execute(array('data' => $encodedValue));
     $resultRow = $result->current();
     $newPostArray = json_decode($resultRow['post_update'], true);
     $newPostObject = $this->hydrator->hydrate($newPostArray, new Post());
     // 		$newPostObject	= $this->hydrator->hydrate($values, $this->postPrototype);
     return $newPostObject;
 }
コード例 #11
0
 /**
  * @param object|array $values
  * @return bool
  * @throws \Exception
  */
 public function update($values)
 {
     if (is_object($values)) {
         $values = $this->_hydrator->extract($values);
     }
     $values = array_intersect_key($values, $this->_class->getFields());
     $identifier = $this->_class->getIdentifier();
     $identifiers = array_intersect_key($values, $identifier);
     $result = $this->_em->getConnexionDriver()->updateItem($identifiers, $values, $this->_class);
     if (!$result) {
         throw new \Exception('Something wrong.');
     }
     return $this->_hydrator->hydrate($values, new $this->_entityName());
 }
コード例 #12
0
 /**
  * Extract values from an object
  *
  * @param  object $object
  * @return array
  */
 public function extract($object)
 {
     return $this->hydrator->extract($object);
 }
コード例 #13
0
 /**
  * Extract values from an object.
  *
  * @param object $object
  *
  * @return array
  */
 public function extract($object)
 {
     return $this->extractService->extract($object);
 }
コード例 #14
0
 /**
  * Callback to be used when {@see \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent::EVENT_EXTRACT} is triggered
  *
  * @param \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent $event
  *
  * @return array
  *
  * @internal
  */
 public function onExtract(ExtractEvent $event)
 {
     $data = $this->hydrator->extract($event->getExtractionObject());
     $event->mergeExtractedData($data);
     return $data;
 }
コード例 #15
0
 /** {@inheritdoc} */
 public function extract($object)
 {
     return array_change_key_case($this->_hydrator->extract($object), CASE_UPPER);
 }
 /**
  * @iterations 20000
  * @group extraction
  */
 public function generatedHydratorExtract()
 {
     $data = $this->hydrator->extract($this->hydratedObject);
 }
コード例 #17
0
ファイル: ZendSpec.php プロジェクト: indigophp/hydra
 function it_extracts_values_from_an_object(HydratorInterface $hydrator)
 {
     $object = new ShortExampleWithValues();
     $hydrator->extract($object)->willReturn(['c' => 1]);
     $this->extract($object)->shouldReturn(['c' => 1]);
 }
コード例 #18
0
 /**
  * @param Paginator $paginator
  */
 public function setPaginator(Paginator $paginator)
 {
     foreach ($paginator->getCurrentItems() as $k => $item) {
         $this->setVariable($k, $this->hydrator->extract($item));
     }
 }
コード例 #19
0
ファイル: Zend.php プロジェクト: indigophp/hydra
 /**
  * {@inheritdoc}
  */
 public function extract($object)
 {
     $this->ensureObject($object);
     return $this->hydrator->extract($object);
 }