У Laravel 12.48 з'явилися expression aliases для Query Builder

2
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 лютого, 2026
Laravel 12.48.0 додає alias для виразів у Query Builder, нову подію BatchFinished, підтримку прапорів JSON у HTTP‑відповідях та метод skipWhen() для HandleCors. Також покращено типізацію, ізольовано компіляцію Blade під час паралельних тестів і прискорено інстанціювання класів.

Дата випуску: January 20, 2026
Laravel Version: 12.48.0

Коротко

Laravel v12.48.0 додає аліаси для виразів у Query Builder, нові події життєвого циклу пакетів, розширені опції декодування JSON у HTTP-відповідях та подію BatchFinished. Реліз також містить покращення типізації, підтримку ізольованої компіляції view під час паралельного тестування та метод skipWhen для CORS middleware.

Головні новинки:

Що нового

Псевдоніми виразів у Query Builder

Laravel 12.48.0 додає зручні методи для задання псевдонімів raw-виразів безпосередньо в query builders, що робить raw SQL читабельнішим і простішим у підтримці.

// Before: select available_a - used_a from "users"
// v12.48.0: select (available_a - used_a) as "remaining_a" from "users"
User::select([
    'remaining_a' => new Expression('available_a - used_a'),
]);

Pull Request: #58436

Подія BatchFinished

Додано подію BatchFinished, що спрацьовує, коли batch успішно завершується (усі jobs виконано без помилок). Це доповнює BatchFailed і дає точніший контроль над життєвим циклом пакетів.

use Illuminate\Bus\Events\BatchFinished;
 
Event::listen(function (BatchFinished $event) {
    $batch = $event->batch;
 
    // Perform cleanup or post-processing
    Log::info("Batch {$batch->id} completed successfully");
 
    // Trigger follow-up actions
    dispatch(new NotifyAdminOfCompletion($batch));
});

Застосування:

Pull Request: #58431

Флаги декодування JSON для HTTP Client

Клас Response HTTP Client тепер приймає кастомні флаги декодування JSON, даючи контроль над парсингом JSON-відповідей.

$response = Http::get('https://api.example.com/data');
 
// Decode with custom flags
$data = $response->json(flags: JSON_BIGINT_AS_STRING);
 
// Combine multiple flags
$data = $response->json(
    flags: JSON_BIGINT_AS_STRING | JSON_THROW_ON_ERROR
);

Корисно коли:

Pull Request: #58379

Пропуск HandleCors у middleware

HandleCors тепер підтримує умовне пропускання через новий метод skipWhen(), що дозволяє обходити CORS для конкретних маршрутів або умов.

use Illuminate\Http\Middleware\HandleCors;
 
// In a service provider or middleware configuration
HandleCors::skipWhen(function ($request) {
    // Skip CORS for internal API calls
    return $request->is('internal-api/*');
});
 
// Or use a simpler condition
HandleCors::skipWhen(fn ($request) => $request->hasHeader('X-Internal-Request'));

Це зручно для внутрішніх endpoint-ів або health checks, які не повинні підлягати CORS-політиці.

Pull Request: #58361

Рядки перекладу з дужками та фігурними дужками

Рядки перекладу тепер можуть містити квадратні ([]) і фігурні ({}) дужки, що дозволяє без проблем додавати приклади коду чи JSON у переклади.

// translations/en/messages.php
return [
    'code_example' => 'Use the format: {user[name]}',
    'array_syntax' => 'Access with: $data[index]',
];

Це знімає обмеження на вміст перекладів і полегшує додавання технічних прикладів.

Pull Request: #58367

Ізольована компіляція view під час паралельних тестів

При паралельних запусках тестів скомпільовані Blade view тепер ізольовані для кожного процесу, що усуває гонки та конфлікти кешу між воркерами.

Наслідки:

Зміни працюють автоматично при використанні in-built паралельного тестування Laravel.

Pull Request: #58390

Покращення подій черги

До подій черги додано додаткові властивості для кращого моніторингу та дебагу:

use Illuminate\Queue\Events\JobPopping;
use Illuminate\Queue\Events\JobReleasedAfterException;
 
Event::listen(function (JobPopping $event) {
    Log::debug("Popping job from queue: {$event->queue}");
});
 
Event::listen(function (JobReleasedAfterException $event) {
    Log::info("Job released with backoff: {$event->backoff} seconds");
});

Pull Requests:

Покращення типізації

Laravel 12.48.0 містить низку змін для кращої підтримки IDE та статичного аналізу:

Це покращує роботу з PHPStan, Psalm та іншими інструментами статичного аналізу.

Pull Requests:

Додаткові покращення

Продуктивність:

Виправлення помилок:

Тестування та якість:

Інші зміни:

Примітки щодо оновлення

Для типової аплікації суттєвих зламів сумісності не очікується. Перед оновленням перегляньте повний changelog.

Якщо ви використовуєте сторонні authentication guards, перевірте потоки автентифікації на сумісність з виправленнями в цьому релізі.

Посилання

Популярні

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

Logomark Logotype

Що нового в PHP 8.5

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

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!