trait ResolvesJsonApiElements

Constants

protected DEFAULT_MAX_RELATIONSHIP_DEPTH

The default maximum relationship depth.

Properties

protected bool $usesRequestQueryString

Determine whether resources respect sparse fieldsets from the request.

protected bool $includesPreviouslyLoadedRelationships

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

protected null|array<int, string> $requestedRelationships

The requested relationships for the resource.

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

Cached loaded relationships map.

protected array $loadedRelationshipIdentifiers

Cached loaded relationship identifiers.

static int $maxRelationshipDepth

The maximum relationship depth.

Methods

static void
maxRelationshipDepth(int $depth)

Specify the maximum relationship depth.

array
resolveResourceObject(JsonApiRequest $request)

Resolve 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.

array
requestedResourceRelationships(JsonApiRequest $request, string|null $relationName = null)

Get the requested relationships for this resource or one of its relationships.

getResourceRelationships(JsonApiRequest $request)

Get the declared resolvers for the requested resource relationships.

static void
prepareResourceRelationships(Collection $resources, JsonApiRequest $request)

Load requested relationships in batches before serializing their attributes.

resolveIncludedResourceObjects(JsonApiRequest $request)

Resolve included for the resource.

static array
resolveIncludedResources(Collection $resources, JsonApiRequest $request)

Resolve included resources and preserve linkage when combining duplicate identities.

static void
mergeResourceRelationships(array $relationships, array $additional, array $identifiers)

Merge relationship linkage without discarding descendants of duplicate resources.

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 attributes should respect the request's sparse fieldsets.

ignoreFieldsAndIncludesInQueryString()

Indicate that attributes should ignore the request's sparse fieldsets.

includePreviouslyLoadedRelationships()

Indicate that relationship should include loaded relationships.

Details

at line 77
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 85
protected array resolveResourceObject(JsonApiRequest $request)

Resolve data for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 108
string resolveResourceIdentifier(JsonApiRequest $request)

Resolve the resource's identifier.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

at line 132
string resolveResourceType(JsonApiRequest $request)

Resolve the resource's type.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

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

Resolve the resource's attributes.

Parameters

JsonApiRequest $request
string $resourceType

Return Value

array

Exceptions

RuntimeException

at line 188
protected array resolveResourceRelationshipIdentifiers(JsonApiRequest $request)

Resolve relationships for the resource's data object.

Parameters

JsonApiRequest $request

Return Value

array

Exceptions

RuntimeException

at line 207
protected void compileResourceRelationships(JsonApiRequest $request)

Compile resource relationships.

Parameters

JsonApiRequest $request

Return Value

void

at line 238
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 326
protected array requestedResourceRelationships(JsonApiRequest $request, string|null $relationName = null)

Get the requested relationships for this resource or one of its relationships.

Parameters

JsonApiRequest $request
string|null $relationName

Return Value

array

at line 359
protected Collection getResourceRelationships(JsonApiRequest $request)

Get the declared resolvers for the requested resource relationships.

Parameters

JsonApiRequest $request

Return Value

Collection

at line 373
static void prepareResourceRelationships(Collection $resources, JsonApiRequest $request)

internal  
 

Load requested relationships in batches before serializing their attributes.

Parameters

Collection $resources
JsonApiRequest $request

Return Value

void

at line 425
Collection resolveIncludedResourceObjects(JsonApiRequest $request)

Resolve included for the resource.

Parameters

JsonApiRequest $request

Return Value

Collection

at line 489
static array resolveIncludedResources(Collection $resources, JsonApiRequest $request)

internal  
 

Resolve included resources and preserve linkage when combining duplicate identities.

Parameters

Collection $resources
JsonApiRequest $request

Return Value

array

at line 543
static protected void mergeResourceRelationships(array $relationships, array $additional, array $identifiers)

Merge relationship linkage without discarding descendants of duplicate resources.

Parameters

array $relationships
array $additional
array $identifiers

Return Value

void

Resolve the links for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 607
protected array resolveResourceMetaInformation(JsonApiRequest $request)

Resolve the meta information for the resource.

Parameters

JsonApiRequest $request

Return Value

array

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

Indicate that attributes should respect the request's sparse fieldsets.

Parameters

bool $value

Return Value

ResolvesJsonApiElements

at line 625
ResolvesJsonApiElements ignoreFieldsAndIncludesInQueryString()

Indicate that attributes should ignore the request's sparse fieldsets.

at line 633
ResolvesJsonApiElements includePreviouslyLoadedRelationships()

Indicate that relationship should include loaded relationships.