Example #1
0
 /**
  * Serializes the "interior" of a model.
  * This is the serialization that takes place outside of a "data" container.
  * Can be used for root model and relationship model serialization.
  *
  * @param   Model               $model
  * @param   AdapterInterface    $adapter
  * @return  array
  */
 protected function serializeModel(Model $model, AdapterInterface $adapter)
 {
     $metadata = $model->getMetadata();
     $serialized = ['type' => $model->getType(), 'id' => $model->getId()];
     if ($this->depth > 0) {
         // $this->includeResource($resource);
         return $serialized;
     }
     foreach ($metadata->getAttributes() as $key => $attrMeta) {
         $value = $model->get($key);
         $serialized['attributes'][$key] = $this->serializeAttribute($value, $attrMeta);
     }
     $serialized['links'] = ['self' => $adapter->buildUrl($metadata, $model->getId())];
     $model->enableCollectionAutoInit(false);
     $this->increaseDepth();
     foreach ($metadata->getRelationships() as $key => $relMeta) {
         $relationship = $model->get($key);
         $serialized['relationships'][$key] = $this->serializeRelationship($model, $relationship, $relMeta, $adapter);
     }
     $this->decreaseDepth();
     $model->enableCollectionAutoInit(true);
     return $serialized;
 }
Example #2
0
 /**
  * {@inheritDoc}
  */
 public function delete(Model $model)
 {
     $metadata = $model->getMetadata();
     $criteria = $this->getRetrieveCritiera($metadata, $model->getId());
     $this->createQueryBuilder($metadata)->remove()->setQueryArray($criteria)->getQuery()->execute();
     return $model;
 }