Maison >développement back-end >tutoriel php >Préserver les clés de collecte dans les ressources de l'API Laravel

Préserver les clés de collecte dans les ressources de l'API Laravel

百草
百草original
2025-03-06 02:26:09858parcourir

Preserving Collection Keys in Laravel API Resources

Laravel fait réprimander l'index de la collection de ressources par défaut lors de la création d'une API. Pour les situations où la clé d'origine a un sens, l'attribut preserveKeys maintient la structure de données attendue.

Voici un exemple de la façon d'utiliser cette propriété dans une application Laravel:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class KeyValueResource extends JsonResource
{
    public $preserveKeys = true;

    public function toArray($request)
    {
        return [
            'value' => $this->value,
            'updated_at' => $this->updated_at,
            'metadata' => $this->metadata
        ];
    }
}

un autre exemple:

<?php

namespace App\Http\Controllers;

use App\Models\Setting;
use App\Http\Resources\SettingResource;

class SettingController extends Controller
{
    public function index()
    {
        $settings = Setting::all()->keyBy('key');

        return SettingResource::collection($settings);
    }
}

class SettingResource extends JsonResource
{
    public $preserveKeys = true;

    public function toArray($request)
    {
        return [
            'value' => $this->formatValue(),
            'type' => $this->type,
            'last_updated' => $this->updated_at->toDateTimeString(),
            'editable' => $this->is_editable
        ];
    }
}

Cela renvoie une réponse comme celle-ci:
{
    "data": {
        "app_name": {
            "value": "My Application",
            "type": "string",
            "last_updated": "2024-03-15 10:30:00",
            "editable": true
        },
        "max_upload_size": {
            "value": 10485760,
            "type": "integer",
            "last_updated": "2024-03-15 10:30:00",
            "editable": true
        }
    }
}

preserveKeys $preserveKeys = true

La propriété assure que les touches significatives sont conservées dans la réponse API, qui est particulièrement importante pour la configuration de données et les touches significatives dans la réponse API, qui est particulièrement importante pour la configuration des données et des touches. En définissant , la collection de ressources Laravel conserve sa clé d'origine au lieu d'utiliser l'index numérique par défaut.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn