Дата випуску: February 4, 2026
Версія Laravel: 12.50.0
Коротко
Laravel v12.50.0 додає новий метод колекцій hasMany() для перевірки наявності кількох відповідних елементів, а також підтримку унікальних queued listeners, типізовані геттери кешу та новий метод моделі для виключення appended-атрибутів. Реліз і надалі покращує досвід розробника — розширена підтримка enum і безліч виправлень помилок.
Головні новинки:
hasMany()withoutAppends() для моделейauthority() для розбору URIУ версії 12.50.0 до колекцій додано hasMany() — простий спосіб перевірити, чи містить колекція кілька елементів, що задовольняють умову. Це зворотна операція до hasSole() (v12.49.0): якщо hasSole() підтверджує рівно один збіг, то hasMany() — наявність кількох.
// Check if collection has multiple items
$collection->hasMany();
// With a callback filter
$users->hasMany(fn ($user) => $user->isActive());
// With key/value pair
$orders->hasMany('status', 'pending');
// With operator syntax
$products->hasMany('price', '>=', 100);
Зручно для валідації, умовних сценаріїв і фільтрації, коли треба переконатися у наявності кількох елементів перед виконанням операції.
Pull Request: #58550
Queued event listeners тепер можуть реалізовувати контракти ShouldBeUnique та ShouldBeUniqueUntilProcessing, що запобігає дублюванню слухачів у черзі при швидкому багаторазовому надсиланні:
namespace App\Listeners;
use App\Events\LicenseSaved;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
class AcquireProductKey implements ShouldQueue, ShouldBeUnique
{
public function uniqueId(LicenseSaved $event): string
{
return $event->license->id;
}
public function __invoke(LicenseSaved $event): void
{
// Process event...
}
}
Це аналогічно паттерну унікальних job і вирішує типову проблему продакшену, коли слухачі потрапляють у чергу кілька разів, хоча повинні виконатися лише раз для конкретного ідентифікатора. На відміну від middleware WithoutOverlapping, яке лише запобігає одночасному виконанню, ShouldBeUnique не дозволяє дублюваним задачам потрапити в чергу спочатку.
Pull Request: #58402
Новий метод withoutAppends() дозволяє вибірково видаляти appended-атрибути з екземплярів моделі, що покращує продуктивність при формуванні API-відповідей та серіалізації даних:
// Remove all appended attributes
$user->withoutAppends();
// Remove specific appended attributes
$user->withoutAppends(['full_name', 'avatar_url']);
Особливо корисно, якщо у моделі є обчислювані appended-атрибути, які дорого по ресурсах і не потрібні для кожного запиту. Замість кількох моделей або трансформацій ресурсів можна умовно виключати appends під час запиту.
Pull Request: #58552
Facade Cache тепер має типізовані методи для отримання значень з кешу, що підвищує безпеку типів і підтримку IDE:
// Get integer with default
$count = Cache::integer('view_count', 0);
// Get string with default
$name = Cache::string('user_name', 'Guest');
// Get boolean with default
$isActive = Cache::boolean('feature_enabled', false);
// Get float with default
$price = Cache::float('product_price', 0.0);
// Get array with default
$items = Cache::array('cart_items', []);
Ці методи гарантують консистентність типів і роблять очевидним, який тип значення очікується з кешу, зменшуючи помилки під час виконання і покращуючи читабельність коду.
Pull Request: #58451
Клас Support\Uri отримав метод authority() для виділення authority-компоненти з URI:
$uri = Uri::of('https://user:pass@example.com:8080/path');
$authority = $uri->authority(); // "user:pass@example.com:8080"
Authority складається з інформації про користувача, хоста та порту — корисно при парсингу або валідації URL.
Pull Request: #58534
Продовжуючи розширення підтримки enum, Cache::get() тепер приймає enum-значення при використанні масивних ключів:
$values = Cache::get([CacheKey::User, CacheKey::Settings]);
Це доповнює попередні додатки підтримки enum у сесіях і методах кешу, забезпечуючи типобезпечне управління ключами кешу по всьому додатку.
Pull Request: #58616
Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту