Автоматичне завантаження зв'язків у Laravel 12.8

6
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Laravel 12.8.0 пропонує ряд нововведень, серед яких автоматичне завантаження зв'язків та метод для створення колекції з JSON. Як ці зміни можуть спростити вашу роботу? Читайте далі, щоб дізнатися більше про нову функціональність Laravel

Команда Laravel випустила версію v12.8.0, яка включає автоматичне завантаження зв'язків, створення екземпляра колекції з рядка JSON та інші нововведення:

# Автоматичне завантаження зв'язків

Сергій Литвинчук представив функцію автоматичного завантаження зв'язків:

У великих проєктах важко відслідковувати та вручну вказувати, які зв'язки повинні бути завантажені заздалегідь, особливо якщо ці зв'язки глибоко вкладені або використовуються динамічно. Тому автоматичне завантаження зв'язків може бути корисним.

// замість цього
 
$projects->load([
    'client.owner.details',
    'client.customPropertyValues',
    'clientContact.customPropertyValues',
    'status',
    'company.statuses',
    'posts.authors.articles.likes',
    'related.statuses'
]);
 
 
// можна використовувати це
$projects->withRelationshipAutoloading();

Ось ще один приклад із опису запиту на зміни:

$orders = Order::all()->withRelationshipAutoloading();
 
foreach ($orders as $order) {
    echo $order->client->owner->company->name;
}
 
// автоматичні виклики:
// $orders->loadMissing('client');
// $orders->loadMissing('client.owner');
// $orders->loadMissing('client.owner.company');

Ви можете увімкнути автоматичне завантаження для моделей за допомогою такого статичного методу:

Model::automaticallyEagerLoadRelationships();

# Створення колекції з JSON

@DarkGhostHunter додав метод fromJson до класу Collection, який дозволяє створити колекцію з рядка JSON:

// Раніше
$collection = new Collection(json_decode($json, true));
 
// Тепер
$collection = Collection::fromJson($json);

Метод fromJson() також підтримує аргументи глибини та флагів, які ви можете передати до json_decode():

$collection = Collection::fromJson(json: $json, flags: JSON_THROW_ON_ERROR);

# Варіанти "Create Many" для зв'язків HasOneOrMany

Філіп Ієцці реалізував методи forceCreateMany() та forceCreateManyQuietly() для зв'язку HasOneOrMany:

$post->comments()->forceCreateMany($data);
$post->comments()->forceCreateManyQuietly($data);

Приклад із опису запиту на зміни, який вимагає примусового створення окремих моделей:

// Раніше
collect($comments)
    ->map(fn (array $comment) => [
        ...$comment,
        // підOverride деякі атрибути
    ])
    ->each(fn (array $comment) => $post->comments()->forceCreateQuietly($comment));
 
// Тепер
collect($comments)
    ->map(fn (array $comment) => [
        ...$comment,
        // підOverride деякі атрибути
    ])
    ->pipe($post->comments()->forceCreateManyQuietly(...));

# Примітки про випуск

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

# v12.8.0

Популярні

Logomark Logotype

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

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

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

Logomark Logotype

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

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