Методи fill та insert в Eloquent у Laravel 12.6

Перекладено ШІ 0 Laravel News 08 квітня, 2025

Оновлення Laravel до версії 12.6.0 приносить безліч нововведень, включаючи метод `fillAndInsert()` та помічник для обробки URI. Що ще цікавого ви знайдете в новій версії? Читайте далі, щоб дізнатися більше!

Команда Laravel випустила версію 12.6.0, що включає новий метод Eloquent fillAndInsert(), хелпер для сегментів URL, метод appliedRules() для Password та інші цікаві оновлення

# Дозволяє об'єднувати атрибути моделі перед вставкою

Люк Кузміш додав метод fillAndInsert(), який дозволяє “в ручному режимі кастувати значення до примітивів, встановлювати часові мітки та UUID”:

ModelWithUniqueStringIds::fillAndInsert([
    [
        'name' => 'Тейлор', 'role' => IntBackedRole::Admin, 'role_string' => StringBackedRole::Admin,
    ],
    [
        'name' => 'Нуном', 'role' => 3, 'role_string' => 'admin',
    ],
    [
        'name' => 'Дріс', 'uuid' => 'bbbb0000-0000-7000-0000-000000000000',
    ],
    [
        'name' => 'Кріс',
    ],
]);

Докладніше в Запиті на злиття #55038.

# Додати виключення HTTP-запиту

Люк Кузміш розробив метод requestException() для випадків, коли вам потрібно вручну створити виключення для HTTP-клієнта:

// До
$exception = new RequestException(
    new Response(
        Http::response(['code' => 'not_found', 404])->wait()
    )
);
 
// Після
$exception = Http::requestException(['code' => 'not_found'], 404);

Деталі дивіться в Запиті на злиття #55241.

# Хелпер-метод для сегментів URL

Честер Сайкс додав новий метод pathSegments() до класу Uri, який повертає частини шляху URI у вигляді колекції:

$uri = Uri::of('https://laravel.com/one/two/three');
 
// Вручну
$firstSegment = collect(explode('/', $uri->path()))->first(); // 'one'
 
// Використовуючи метод pathSegments()
$firstSegment = $uri->pathSegments()->first();

# Метод appliedRules для Password

@devajmeireles представив метод appliedRules() для флюїдного конструктора правил Password. Метод appliedRules() повертає масив правил валідації пароля та їх статуси використання

Гляньте на приклад коду для визначення правил пароля вашого додатку:

Password::defaults(function () {
    return Password::min(8)
        ->mixedCase()
        ->numbers();
});
 
// У вигляді
return view('livewire.profile', [
    'appliedRules' => Password::default()->appliedRules(),
]);
<div>
    <form wire:submit="save">
        <div>
            <x-input label="Password" />
 
            <span>{{ __('Пароль має містити не менше :min символів.', ['min' => $appliedRules['min']]) }}</span>
 
            @if ($appliedRules['mixedCase'] === true)
                <span>{{ __('Пароль має містити хоча б одну велику та одну маленьку літеру.') }}</span>
            @endif
 
            @if ($appliedRules['numbers'] === true)
                <span>{{ __('Пароль має містити хоча б одну цифру.') }}</span>
            @endif
        </div>
        <x-button type="submit">
            Зберегти
        </x-button>
    </form>
</div>

Деталі реалізації в Запиті на злиття #55206.

# Дозволити заборону команди db:seed

Бенедикт Франке додав можливість заборони команди SeedCommand у певних середовищах. SeedCommand не забороняється при виклику prohibitDestructiveCommands(), проте після Запиту на злиття #55238 ви можете заборонити команду db:seed таким чином:

DB::prohibitDestructiveCommands();
SeedCommand::prohibit();

# Не зупиняти процес вирізання, якщо модель не вдалася

Гюнтер Дебрауер оновив команду model:prune, щоб процес продовжувався навіть після виникнення виключення:

Коли ви виконуєте команду model:prune, і під час вирізання однієї моделі виникає виключення, вся команда завершується невдало. У мене була подібна проблема нещодавно в проєкті. Це призвело до того, що жодна модель не була вирізана, поки я не виправив помилку, що заважала вирізанню однієї моделі

Цей PR це виправляє. Команда model:prune пропускатиме моделі, які не можуть бути вирізані, та звітуватиме про виключення, що сталися під час вирізання цих моделей

Деталі в Запиті на злиття #55237.

# Нотатки про випуск

Ви можете переглянути повний список нових функцій та оновлень нижче, а також зміни між версіями 12.5.0 та 12.6.0 на GitHub. Наступні нотатки про випуск безпосередньо з чейнджлогу:

# v12.6.0

Популярні

Інше, що варто прочитати

14 Оновлено 02 червня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

11 Оновлено 02 червня, 2026

Локальні моделі та їх скоупи в Laravel за допомогою атрибута Scope

В Laravel 12 ми отримали можливість використовувати новий підхід для визначення локальних скоупів у моделях Eloquent. Дізнайтеся, як новий атрибут #[Scope] спрощує цей процес і зберігає ваші назви методів незмінними

13 Оновлено 02 червня, 2026

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!