trait ResolvesJsonApiElements

Constants

protected DEFAULT_MAX_RELATIONSHIP_DEPTH

The default maximum relationship depth.

Properties

protected bool $usesRequestQueryString

Determine whether resources respect inclusions and fields from the request.

protected bool $includesPreviouslyLoadedRelationships

Determine whether included relationship for the resource from eager loaded relationship.

null|JsonApiResource, 1: string, 2: string, 3: bool}> $loadedRelationshipsMap

Cached loaded relationships map.

protected array $loadedRelationshipIdentifiers

Cached loaded relationships identifers.

static int $maxRelationshipDepth

The maximum relationship depth.

Methods

static void
maxRelationshipDepth(int $depth)

Specify the maximum relationship depth.

array
resolveResourceObject(JsonApiRequest $request)

Resolves data for the resource.

string
resolveResourceIdentifier(JsonApiRequest $request)

Resolve the resource's identifier.

string
resolveResourceType(JsonApiRequest $request)

Resolve the resource's type.

array
resolveResourceAttributes(JsonApiRequest $request, string $resourceType)

Resolve the resource's attributes.

array
resolveResourceRelationshipIdentifiers(JsonApiRequest $request)

Resolve relationships for the resource's data object.

void
compileResourceRelationships(JsonApiRequest $request)

Compile resource relationships.

compileResourceRelationshipUsingResolver(JsonApiRequest $request, mixed $resource, RelationResolver $relationResolver, Collection|Model|null $relatedModels)

Compile resource relations.

void
compileIncludedNestedRelationshipsMap(JsonApiRequest $request, Model $relation, JsonApiResource $resource)

Compile included relationships map.

resolveIncludedResourceObjects(JsonApiRequest $request)

Resolves included for the resource.

array
resolveResourceLinks(JsonApiRequest $request)

Resolve the links for the resource.

array
resolveResourceMetaInformation(JsonApiRequest $request)

Resolve the meta information for the resource.

respectFieldsAndIncludesInQueryString(bool $value = true)

Indicate that relationship loading should respect the request's "includes" query string.

ignoreFieldsAndIncludesInQueryString()

Indicate that relationship loading should not rely on the request's "includes" query string.

includePreviouslyLoadedRelationships()

Indicate that relationship should include loaded relationships.

Details

at line 67
static void maxRelationshipDepth(int $depth)

Specify the maximum relationship depth.

Boot-only. The depth limit persists in a static property for the worker lifetime and affects every subsequent JSON:API resource resolution.

Parameters

int $depth

Return Value

void

at line 75
protected array resolveResourceObject(JsonApiRequest $request)

Resolves data for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 96
string resolveResourceIdentifier(JsonApiRequest $request)

Resolve the resource's identifier.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

at line 114
string resolveResourceType(JsonApiRequest $request)

Resolve the resource's type.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

at line 142
protected array resolveResourceAttributes(JsonApiRequest $request, string $resourceType)

Resolve the resource's attributes.

Parameters

JsonApiRequest $request
string $resourceType

Return Value

array

Exceptions

RuntimeException

at line 171
protected array resolveResourceRelationshipIdentifiers(JsonApiRequest $request)

Resolve relationships for the resource's data object.

Parameters

JsonApiRequest $request

Return Value

array

Exceptions

RuntimeException

at line 190
protected void compileResourceRelationships(JsonApiRequest $request)

Compile resource relationships.

Parameters

JsonApiRequest $request

Return Value

void

at line 236
protected Generator compileResourceRelationshipUsingResolver(JsonApiRequest $request, mixed $resource, RelationResolver $relationResolver, Collection|Model|null $relatedModels)

Compile resource relations.

Parameters

JsonApiRequest $request
mixed $resource
RelationResolver $relationResolver
Collection|Model|null $relatedModels

Return Value

Generator

at line 323
protected void compileIncludedNestedRelationshipsMap(JsonApiRequest $request, Model $relation, JsonApiResource $resource)

Compile included relationships map.

Parameters

JsonApiRequest $request
Model $relation
JsonApiResource $resource

Return Value

void

at line 337
Collection resolveIncludedResourceObjects(JsonApiRequest $request)

Resolves included for the resource.

Parameters

JsonApiRequest $request

Return Value

Collection

Resolve the links for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 410
protected array resolveResourceMetaInformation(JsonApiRequest $request)

Resolve the meta information for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 418
ResolvesJsonApiElements respectFieldsAndIncludesInQueryString(bool $value = true)

Indicate that relationship loading should respect the request's "includes" query string.

Parameters

bool $value

Return Value

ResolvesJsonApiElements

at line 428
ResolvesJsonApiElements ignoreFieldsAndIncludesInQueryString()

Indicate that relationship loading should not rely on the request's "includes" query string.

at line 436
ResolvesJsonApiElements includePreviouslyLoadedRelationships()

Indicate that relationship should include loaded relationships.