Дата релізу: 7 січня 2026
Версії Laravel: 12.45.1, 12.45.2, 12.46.0
Коротко
7 січня 2026 року вийшли три версії фреймворку Laravel із корисними новими хелперами для масивів та колекцій, розширенням Gate для підтримки enum, а також низкою важливих виправлень. У версії 12.46.0 додано методи Arr::onlyValues() і Arr::exceptValues() для фільтрації масивів за значеннями та Collection::containsManyItems() для перевірки кількох елементів. У 12.45.2 Gate::has() почав приймати UnitEnum, а 12.45.1 виправляє критичну проблему з ResourceCollections.
Головні оновлення:
Arr::onlyValues() та Arr::exceptValues() для фільтрації масивів за значеннямиCollection::containsManyItems() — перевірка на наявність кількох елементівUnitEnum у Gate::has() для типобезпечної авторизаціїResourceCollection та додавання правил валідатораУ Laravel 12.46.0 з’явилися два хелпери: Arr::onlyValues() та Arr::exceptValues(). Вони доповнюють Arr::only() і Arr::except(), але фільтрують масиви за значеннями, а не за ключами.
Arr::onlyValues() зберігає лише ті елементи, значення яких збігаються зі вказаними:
use Illuminate\Support\Arr;
$roles = ['admin', 'editor', 'viewer', 'guest'];
$allowedRoles = Arr::onlyValues($roles, ['admin', 'editor']);
// Result: [0 => 'admin', 1 => 'editor']
Arr::exceptValues() навпаки — видаляє елементи зі значеннями, що збігаються зі списком виключень:
$statuses = ['pending', 'completed', 'failed', 'shipped'];
$activeStatuses = Arr::exceptValues($statuses, ['failed', 'completed']);
// Result: [0 => 'pending', 3 => 'shipped']
Обидва методи підтримують строгу порівняльну перевірку через необов’язковий третій параметр, що корисно для масивів зі змішаними типами:
$mixedValues = [1, '1', 2, '2', 3];
$integers = Arr::onlyValues($mixedValues, [1, 2, 3], strict: true);
// Result: [0 => 1, 2 => 2, 4 => 3] - only exact type matches
Застосування: фільтрація конфігурацій, видалення певних статусів, санітизація даних за allowlist/denylist та очищення значень форм.
Pull Request: #58317
У 12.46.0 додано метод containsManyItems() для Collection — він перевіряє, чи колекція містить більше одного елемента, доповнюючи containsOneItem().
Приклади використання:
collect([])->containsManyItems(); // false
collect([1])->containsManyItems(); // false
collect([1, 2])->containsManyItems(); // true
collect([1, 2, 3])->containsManyItems(); // true
Метод також приймає необов’язковий callback для перевірки, чи декілька елементів відповідають умові:
$users = collect([
['name' => 'John', 'role' => 'admin'],
['name' => 'Jane', 'role' => 'editor'],
['name' => 'Bob', 'role' => 'admin'],
]);
// Check if there are multiple admins
$hasMultipleAdmins = $users->containsManyItems(fn($user) => $user['role'] === 'admin');
// Result: true
Зручно для валідації, коли потрібно переконатися, що вибрано кілька опцій:
$selectedOptions = collect($request->input('options'));
if (! $selectedOptions->containsManyItems()) {
throw ValidationException::withMessages([
'options' => 'Please select at least two options.'
]);
}
Метод ефективний: він рано повертає результат після знаходження більше одного збігу, що добре для великих колекцій.
Pull Request: #58312
У версії 12.45.2 Gate::has() тепер приймає UnitEnum, а не тільки рядки або BackedEnum. Це дозволяє робити більш типобезпечні перевірки наявності здібностей (abilities).
Раніше перевіряли лише рядки:
if (Gate::has('view-dashboard')) {
// Ability is defined
}
Тепер можна використовувати PHP enum для типобезпечного перевіряння:
enum Abilities {
case VIEW_DASHBOARD;
case EDIT_POST;
case DELETE_USER;
}
Gate::define(Abilities::VIEW_DASHBOARD, fn($user) => $user->isAdmin());
if (Gate::has(Abilities::VIEW_DASHBOARD)) {
// Type-safe ability check - works with UnitEnum!
}
Також працює з BackedEnum:
enum Permission: string {
case ViewDashboard = 'view-dashboard';
case EditPost = 'edit-post';
}
if (Gate::has(Permission::ViewDashboard)) {
// Ability existence check with backed enum
}
Зручно для динамічної реєстрації прав та умовного підключення фіч:
foreach (Permission::cases() as $permission) {
if (! Gate::has($permission)) {
Gate::define($permission, PermissionPolicy::class);
}
}
Pull Request: #58310
У випусках 12.45.1, 12.45.2 і 12.46.0 також містяться важливі виправлення та поліпшення:
Версія 12.46.0:
Container::buildSelfBuildingInstance(), щоб уникнути помилок у Psalm (#58314)Версія 12.45.2:
Validator::appendRules() при використанні рядків правил через pipe (#58304)toArray() на AnonymousResourceCollection, щоб коректно повертати масив ресурсів (#58302)Версія 12.45.1:
ResourceCollection з простим масивом замість колекції моделей (#58299)Релізи зворотно сумісні і не вимагають змін у коді. Оновіть залежність Laravel до останньої версії:
composer update laravel/framework
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту