У Laravel 12.45 додано JSON:API Resource для виводу ресурсів за специфікацією JSON:API.

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 08 січня, 2026
У релізі Laravel 12.45 з’явилися JsonApiResource, AsBinary cast та хелпер для вкладень із хмарного сховища. Хочете дізнатися, як ці зміни спростять роботу з API, байтовими ідентифікаторами й керуванням сесіями та кешем?

Команда Laravel випустила версію 12.45 з JsonApiResource, класом касту AsBinary, помічником для вкладень із хмарного сховища та іншими оновленнями.

JSON:API ресурс

Mior Muhammad Zaki додав JsonApiResource, який дозволяє виводити API-ресурси за специфікацією JSON:API замість звичного JsonResource:

use Illuminate\Http\Resources\JsonApi\JsonApiResource;
 
class UserResource extends JsonApiResource {}

Створювати JSON API-ресурси можна командою make:resource з прапорцем --json-api:

php artisan make:resource PostResource --json-api

Деталі реалізації — Pull Request #57571.

Клас AsBinary для кастів

Kacper Pruszyński додав каст AsBinary, який зберігає значення у вигляді бінарних байтів і повертає їх у PHP як рядок:

protected function casts(): array
{
    return [
        'id' => AsBinary::uuid(isRequired: true),
        'public_id' => AsBinary::ulid(), // optional by default
        'custom' => AsBinary::of('xor1', false),
    ];
}

Деталі реалізації — Pull Request #58254.

Помічник для вкладень із хмарного сховища

Philo Hermans додав метод вкладення fromCloudStorage(), який спрощує додавання до листів файлів із хмари:

// Before:
Attachment::fromStorageDisk(Storage::getDefaultCloudDriver(), $attachment->path);
 
// After:
Attachment::fromCloudStorage($attachment->path);

Деталі реалізації — Pull Request #58201.

Підтримка BackedEnum для ключів сесії

Andy Hinkle додав підтримку enum для ключів сесії — тепер можна передавати сам enum замість рядкового значення. Це узгоджується з іншими частинами фреймворка:

enum CheckoutSession: string
{
    case Cart = 'checkout.cart';
    case ShippingAddress = 'checkout.shipping_address';
    case PaymentMethod = 'checkout.payment_method';
}
 
// Before
session()->put(CheckoutSession::Cart->value, $items);
session()->get(CheckoutSession::Cart->value);
 
// After (>=12.45)
session()->put(CheckoutSession::Cart, $items);
session()->get(CheckoutSession::Cart);

Деталі реалізації — Pull Request #58241.

BackedEnum для ключів кешу

За аналогією з підтримкою enum у сесіях, Jack Bayliss додав BackedEnum для ключів кешу:

// Before
Cache::put(AnalyticalGraph::PROFILE->value, $result);
 
// After
Cache::put(AnalyticalGraph::PROFILE, $result);

Деталі реалізації — Pull Request #58246.

Позначити email як непідтверджений

Ali Khosrojerdi додав метод markEmailAsUnverified() як доповнення до markEmailAsVerified() для скидання підтвердження email у записі моделі:

$user->markEmailAsUnverified();

Деталі реалізації — Pull Request #58255.

Прапорець --readable для env:encrypt (видимі імена ключів)

Додає прапорець --readable до команди env:encrypt, який генерує по-рядковий зашифрований формат: імена змінних залишаються видимими, а значення шифруються. Це дозволяє бачити, які змінні існують, не розкриваючи конфіденційні дані, і полегшує перегляд пул-реквестів — рев'ювери бачать, які змінні додано, видалено або перейменовано, без дешифрування файлу.

Деталі реалізації — Pull Request #58262.

Нотатки релізу v12.45.0

Повний перелік нових можливостей і змін дивіться нижче, а також diff між 12.44.0 та 12.45.0 на GitHub. Наступні нотатки взяті з changelog:

Зміни v12.45.0

Популярні

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом