При створенні 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, що особливо важливо для конфігураційних даних і структур "ключ-значення"
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel