Resources
A JSON API resource is represented through a PHP object of type Enm\JsonApi\Model\Resource\ResourceInterface and requires at least “type” and “id”.
Enm\JsonApi\Model\Resource\ResourceInterface:
| Method | Return type | Description |
|---|---|---|
| type() | string | Resource Type Identifier (“type”) |
| id() | string | Resource Identifier (“id”) |
| attributes() | KeyValueCollection | Attributes of the resource (“attributes”) |
| relationships() | RelationshipCollectionInterface | The relationships of a resource (“relationships”) |
| links() | LinkCollectionInterface | The links for a resource (“links”) |
| metaInformation() | KeyValueCollection | Meta Informations for a resource (“meta”) |
Relationships
A Relationship is represented through a PHP object of type Enm\JsonApi\Model\Resource\Relationship\RelationshipInterface:
| Method | Return type | Description |
|---|---|---|
| shouldBeHandledAsCollection() | boolean | Indicates if the contained data should be handled as object collection or single object. |
| name() | string | The relationship name |
| related() | ResourceCollectionInterface | Collection of related resources for this relationship. |
| links() | LinkCollectionInterface | Collection of link objects for this relationship. |
| metaInformation() | KeyValueCollection | Collection of meta informations for this relationship. |
| duplicate(string $name = null) | RelationshipInterface | Helper method to duplicate this relationship, optional with another name. |
A relationship contains, depending on return value of “shouldBeHandledAsCollection”, one or many related resources or can be empty.
A relationship needs a unique name (in context of one resource) and offers access to all related resources via RelationshipInterface::related().
Relationships can contain links and meta information like resources.
The relationships of a resource are accessible via ResourceInterface::relationships(), which is an instance of Enm\JsonApi\Model\Resource\Relationship\RelationshipCollectionInterface:
| Method | Return type | Description |
|---|---|---|
| all() | array | All relationship objects of this collection. |
| count() | int | Number of collection entries. |
| isEmpty() | bool | Checks if the collection contains any elements. |
| has(string $name) | bool | Checks if the collection contains a special relationship. |
| get(string $name) | RelationshipInterface | Returns a relationship by name or throws an \InvalidArgumentException if relationship does not exists. |
| set(RelationshipInterface $relationship) | $this | Set a relationship object into the collection. |
| remove(string $name) | $this | Remove a relationship by name from the collection. |
| removeElement(RelationshipInterface $relationship) | $this | Remove a relationship object from the collection. |
Related Resource Meta Information
If a related resource should contain meta information which should only be accessible in the resource identifier object in the relationship,
your Resource can implement Enm\JsonApi\Model\Resource\Extension\RelatedMetaInformationInterface and use Enm\JsonApi\Model\Resource\Extension\RelatedMetaInformationTrait.
| back to Entry Point | next: Attributes and Meta |