Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Http/Resources/JsonApi/JsonApiRequest.php
Строк: 83
<?php

namespace IlluminateHttpResourcesJsonApi;

use 
IlluminateHttpRequest;
use 
IlluminateSupportArr;
use 
IlluminateSupportCollection;

class 
JsonApiRequest extends Request
{
    
/**
     * Cached sparse fieldset.
     */
    
protected ?array $cachedSparseFields null;

    
/**
     * Cached sparse included.
     */
    
protected ?array $cachedSparseIncluded null;

    
/**
     * Get the request's included fields.
     */
    
public function sparseFields(string $key): array
    {
        if (
is_null($this->cachedSparseFields)) {
            
$this->cachedSparseFields = (new Collection($this->array('fields')))
                ->
transform(fn ($fieldsets) => empty($fieldsets) ? [] : explode(','$fieldsets))
                ->
all();
        }

        return 
$this->cachedSparseFields[$key] ?? [];
    }

    
/**
     * Determine if a sparse fieldset was provided for the given resource type.
     */
    
public function hasSparseFieldset(string $key): bool
    
{
        if (
is_null($this->cachedSparseFields)) {
            
$this->sparseFields($key);
        }

        return 
array_key_exists($key$this->cachedSparseFields);
    }

    
/**
     * Get the request's included relationships.
     */
    
public function sparseIncluded(?string $key null): ?array
    {
        if (
is_null($this->cachedSparseIncluded)) {
            
$included = (string) $this->string('include''');

            
$this->cachedSparseIncluded = (new Collection(empty($included) ? [] : explode(','$included)))
                ->
transform(function ($item) {
                    
$with null;

                    if (
str_contains($item'.')) {
                        [
$relation$with] = explode('.'$item2);
                    } else {
                        
$relation $item;
                    }

                    return [
'relation' => $relation'with' => $with];
                })->
mapToGroups(fn ($item) => [$item['relation'] => $item['with']])
                ->
toArray();
        }

        if (
is_null($key)) {
            return 
array_keys($this->cachedSparseIncluded);
        }

        return 
transform($this->cachedSparseIncluded[$key] ?? null, function ($value) {
            return 
Collection::wrap($value)
                ->
transform(function ($item) {
                    if (! 
is_string($item) || $item === '') {
                        return 
null;
                    }

                    
$item implode('.'Arr::take(explode('.'$item), JsonApiResource::$maxRelationshipDepth 1));

                    return ! empty(
$item) ? $item null;
                })->
filter()->all();
        }) ?? [];
    }
}
Онлайн: 1
Реклама