Новий метод Collection hasSole() у Laravel 12.49.0

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 30 січня, 2026
Laravel 12.49.0 додає новий метод колекцій hasSole(), підзапити між стовпцями та preserveKeys() для ресурсних колекцій. Також з'явилася підтримка datetime для php artisan down, розширено enum‑підтримку й виправлено кілька важливих багів — читайте докладно в статті.

Дата випуску: January 28, 2026 Версія Laravel: 12.49.0

Коротко

Laravel v12.49.0 додає новий метод колекцій hasSole() для перевірки, чи містить колекція рівно один відповідний елемент, а також підтримку підзапитів між колонками, збереження ключів у ланцюжках ресурсних колекцій і підтримку datetime для команди maintenance. Розширено також підтримку enum у сесіях та кеші.

Ключові нововведення:

Що нового

Метод колекції hasSole()

Laravel 12.49.0 додає hasSole() до колекцій — зручний спосіб перевірити, чи є в колекції рівно один елемент, що відповідає умові. Метод узгоджений з номенклатурою sole() і замінює containsOneItem().

// Check if collection has exactly one item
$collection->hasSole();
 
// With a callback filter
$collection->hasSole(fn ($item) => $item->active);
 
// With key/value pair
$collection->hasSole('status', 'pending');
 
// With operator syntax
$collection->hasSole('age', '>=', 21);

Метод підтримує ті ж гнучкі сигнатури фільтрів, що й sole(), тож він інтуїтивний для розробників, знайомих з API колекцій Laravel.

Pull Request: #58463

Підзапит між колонками

Query builder тепер вміє порівнювати результат підзапиту з двома колонками таблиці за допомогою whereBetweenColumns():

$query->whereBetweenColumns($subquery, ['min_value', 'max_value']);

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

Pull Request: #58441

preserveKeys() для ресурсних колекцій

AnonymousResourceCollection тепер має метод preserveKeys() для Fluent-ланцюжків, що дозволяє уникнути проміжних змінних:

// Before
$collection = JsonResource::collection($posts);
$collection->preserveKeys = true;
return $collection;
 
// After
return JsonResource::collection($posts)->preserveKeys();

Це робить налаштування ресурсних колекцій зрозумілішим і послідовнішим з Fluent-API Laravel.

Pull Request: #58443

Підтримка datetime для команди down

Опція --retry у php artisan down тепер приймає рядки datetime поряд із кількістю секунд:

# Retry at a specific datetime
php artisan down --retry="2026-01-28 15:30:00"
 
# Retry tomorrow at 2 PM
php artisan down --retry="tomorrow 14:00"
 
# Retry in 2 hours
php artisan down --retry="+2 hours"
 
# Unix timestamp
php artisan down --retry="@1735660200"

Datetime конвертується в формат RFC 7231 для заголовка Retry-After. Якщо вказано минулу дату, команда видає попередження, щоб уникнути помилкових налаштувань під час технічних робіт.

Pull Request: #58509

Розширена підтримка enum

У цьому релізі продовжено інтеграцію enum — додано підтримку в нових місцях:

Методи сесії: Методи сесії now() і flash() тепер приймають enum-значення як ключі, уніфікуючи поведінку з іншими методами сесії.

Pull Request: #58459

Методи кешу: Cache::flexible() і Cache::withoutOverlapping() тепер підтримують enum-ключі для типобезпечного керування ключами кешу.

Pull Request: #58444

Пошуковий підказник для db:table

Команда php artisan db:table тепер використовує пошукову підказку для вибору таблиці, що спрощує роботу з великими базами даних.

Pull Request: #58442

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

Виправлення:

Покращення:

Відкати:

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

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

Джерела

Популярні

Logomark Logotype

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

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

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

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

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