Збереження ключів колекції в API-ресурсах Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 20 грудня, 2024
Чи знаєте ви, як зберегти значення ключів у ваших API-відповідях при розробці на Laravel? Дізнайтеся, як використовувати властивість preserveKeys, щоб зберегти структуру даних і підтримати зрозумілість вашого коду в нашому новому блозі

При створенні API на Laravel за замовчуванням повторно індексує колекції ресурсів чисельно. Однак для випадків, коли оригінальні ключі мають значення, властивість preserveKeys допомагає зберегти первісну структуру даних.

<?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
        ];
    }
}

Ось приклад того, як це може виглядати у ваших застосунках на Laravel.

<?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
        ];
    }
}

В результаті ви отримаєте відповідь у такому форматі:

{
    "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 гарантує збереження значущих ключів у відповідях вашого API, що особливо важливо для конфігураційних даних і структур "ключ-значення"

Популярні

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel