Нові методи перевірки наявності відносин Eloquent у Laravel 11.37

4
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Починаючи з нового релізу Laravel v11.37, розробники отримали безліч нових можливостей, включаючи нові методи відносин Eloquent та опцію для ігнорування регістру. Долучайтеся до нас, щоб дізнатися, як ці нововведення можуть покращити вашу роботу з Laravel

Минулого тижня команда Laravel випустила версію v11.37, що містить нові методи зв'язків Eloquent, можливість ігнорування регістру в Str::is(), додавання трейту Dumpable до екземпляра Uri та інші покращення.

# Додавання трейту Dumpable до Uri

Адріан Нюрнбергер додав трейт Dumpable до класу Uri, що дозволяє викликати dump() і dd() на екземплярі Uri. Це дає змогу виводити інформацію в будь-якій точці ланцюга вашого екземпляра Uri або виводити й завершувати виконання через dd():

# Додавання опції "Ігнорувати регістр" до Str::is()

Стів Бауман додав можливість ігнорувати регістр під час використання методу Str::is() та екземпляра Stringable. Це дозволяє розробникам відмовитися від точного співставлення регістру, аналогічно до роботи Str::contains():

# Нові методи зв'язків Eloquent

Андрій Хеллдар запропонував методи зв'язків whereDoesntHaveRelation та whereDoesntHaveMorph, які є протилежними до існуючих запитів на існування зв'язків.

Приклади whereDoesntHaveRelation:

// До
User::whereDoesntHave('comments', function ($query) {
    $query->where('created_at', '>', now()->subDay());
}) -> get();
 
// Після
User::whereDoesntHaveRelation(
    'comments', 'created_at', '>', now()->subDay()
) -> get();
 
// Інший приклад
User::whereDoesntHaveRelation(
    'comments', 'is_approved', false
) -> get();

Приклади whereMorphDoesntHaveRelation:

// До
User::whereDoesntHaveMorph('comments', [Post::class, Video::class], function ($query) {
    $query->where('created_at', '>', now()->subDay());
}) -> get();
 
// Після
User::whereMorphDoesntHaveRelation(
    'comments', [Post::class, Video::class], 'created_at', '>', now()->subDay()
) -> get();
 
User::whereMorphDoesntHaveRelation(
    'comments', [Post::class, Video::class], 'is_approved', false
) -> get();

# Додавання assertFailedWith до трейту InteractsWithQueue

Тедді Франкфорт запропонував метод assertFailedWith для трейту InteractsWithQueue, який дозволяє перевіряти виняток у тестах:

use App\Jobs\ProcessPodcast;
use App\Exceptions\MyException;
 
$job = new ProcessPodcast()->withFakeQueueInteractions();
 
$job->assertFailedWith('whoops');
$job->assertFailedWith(MyException::class);
$job->assertFailedWith(new MyException);
$job->assertFailedWith(new MyException(message: 'whoops'));
$job->assertFailedWith(new MyException(message: 'whoops', code: 123));

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

Ознайомитися з повним списком нових функцій та оновлень можна нижче, а також переглянути різницю між 11.36.0 та 11.37.0 на GitHub. Наступні примітки є безпосередньо з changelog:

# v11.37.0

Популярні

Logomark Logotype

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

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

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

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

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