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 protected array<class-string, bool> $loadsRelationshipsByDefault

Whether each resource class uses the default relationship loader.

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.

void
loadMissingRequestedRelationshipsOn(JsonApiRequest $request, Collection $models)

Load the requested relationships that are missing on the given models at once.

void
loadMissingRequestedRelationships(JsonApiRequest $request, Collection $relatedModels, string|null $resourceClass, array $requestedRelationships)

Load the requested relationships that are missing on the given related models.

bool
usesDefaultRelationshipLoading()

Determine whether the resource uses the framework's default relationship loader.

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 87
static void maxRelationshipDepth(int $depth)

Specify the maximum relationship depth.

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 96
protected array resolveResourceObject(JsonApiRequest $request)

Resolve data for the resource.

Parameters

JsonApiRequest $request

Return Value

array

at line 119
string resolveResourceIdentifier(JsonApiRequest $request)

Resolve the resource's identifier.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

at line 143
string resolveResourceType(JsonApiRequest $request)

Resolve the resource's type.

Parameters

JsonApiRequest $request

Return Value

string

Exceptions

ResourceIdentificationException

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

Resolve the resource's attributes.

Parameters

JsonApiRequest $request
string $resourceType

Return Value

array

Exceptions

RuntimeException

at line 199
protected array resolveResourceRelationshipIdentifiers(JsonApiRequest $request)

Resolve relationships for the resource's data object.

Parameters

JsonApiRequest $request

Return Value

array

Exceptions

RuntimeException

at line 218
protected void compileResourceRelationships(JsonApiRequest $request)

Compile resource relationships.

Parameters

JsonApiRequest $request

Return Value

void

at line 249
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 344
void loadMissingRequestedRelationshipsOn(JsonApiRequest $request, Collection $models)

internal  
 

Load the requested relationships that are missing on the given models at once.

Parameters

JsonApiRequest $request
Collection $models

Return Value

void

at line 364
protected void loadMissingRequestedRelationships(JsonApiRequest $request, Collection $relatedModels, string|null $resourceClass, array $requestedRelationships)

Load the requested relationships that are missing on the given related models.

Collection loading starts on the first resource with every root model, then recurses with each nested batch. Overrides must apply constraints to the supplied models, which may belong to different parents.

Parameters

JsonApiRequest $request
Collection $relatedModels
string|null $resourceClass
array $requestedRelationships

Return Value

void

at line 413
bool usesDefaultRelationshipLoading()

internal  
 

Determine whether the resource uses the framework's default relationship loader.

Return Value

bool

at line 421
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 454
protected Collection getResourceRelationships(JsonApiRequest $request)

Get the declared resolvers for the requested resource relationships.

Parameters

JsonApiRequest $request

Return Value

Collection

at line 468
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 520
Collection resolveIncludedResourceObjects(JsonApiRequest $request)

Resolve included for the resource.

Parameters

JsonApiRequest $request

Return Value

Collection

at line 584
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 638
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 702
protected array resolveResourceMetaInformation(JsonApiRequest $request)

Resolve the meta information for the resource.

Parameters

JsonApiRequest $request

Return Value

array

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

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

Parameters

bool $value

Return Value

ResolvesJsonApiElements

at line 724
ResolvesJsonApiElements ignoreFieldsAndIncludesInQueryString()

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

at line 734
ResolvesJsonApiElements includePreviouslyLoadedRelationships()

Indicate that relationship should include loaded relationships.