ZF\Apigility\Doctrine\Server\Resource\DoctrineResource::patch PHP Method

patch() public method

Patch (partial in-place update) a resource
public patch ( mixed $id, mixed $data ) : ZF\ApiProblem\ApiProblem | mixed
$id mixed
$data mixed
return ZF\ApiProblem\ApiProblem | mixed
    public function patch($id, $data)
    {
        $entity = $this->findEntity($id, 'patch', $data);
        if ($entity instanceof ApiProblem) {
            return $entity;
        }
        $results = $this->triggerDoctrineEvent(DoctrineResourceEvent::EVENT_PATCH_PRE, $entity, $data);
        if ($results->last() instanceof ApiProblem) {
            return $results->last();
        }
        // Hydrate entity with patched data
        $this->getHydrator()->hydrate((array) $data, $entity);
        $results = $this->triggerDoctrineEvent(DoctrineResourceEvent::EVENT_PATCH_POST, $entity, $data);
        if ($results->last() instanceof ApiProblem) {
            return $results->last();
        }
        $this->getObjectManager()->flush();
        return $entity;
    }

Usage Example

Example #1
0
 /**
  * Patch (partial in-place update) a resource
  *
  * @param  int  $noteId
  * @param  stdClass $data
  * @return ApiProblem|mixed
  */
 public function patch($noteId, $data)
 {
     if (empty($data->userId) || !is_numeric($data->userId)) {
         return new ApiProblem(422, 'userId value missing');
     }
     $this->setEntityIdentifierName('userId.noteId');
     return parent::patch($data->userId . '.' . $noteId, $data);
 }