Минулого тижня команда Laravel випустила версію v11.37, що містить нові методи зв'язків Eloquent, можливість ігнорування регістру в Str::is()
, додавання трейту Dumpable до екземпляра Uri та інші покращення.
Адріан Нюрнбергер додав трейт Dumpable
до класу Uri, що дозволяє викликати dump()
і dd()
на екземплярі Uri
. Це дає змогу виводити інформацію в будь-якій точці ланцюга вашого екземпляра Uri або виводити й завершувати виконання через dd()
:
Стів Бауман додав можливість ігнорувати регістр під час використання методу Str::is()
та екземпляра Stringable
. Це дозволяє розробникам відмовитися від точного співставлення регістру, аналогічно до роботи Str::contains()
:
Андрій Хеллдар запропонував методи зв'язків 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
, який дозволяє перевіряти виняток у тестах:
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:
Dumpable
до Uri
від @nuernbergerA в https://github.com/laravel/framework/pull/53960$ignoreCase
до Str::is
від @stevebauman в https://github.com/laravel/framework/pull/53981withoutQuery
в Uri для прийому рядкових або масивних даних від @1weiho в https://github.com/laravel/framework/pull/53973Illuminate\Http\Response
для виведення пустого рядка, якщо $content
встановлено на null
від @crynobone в https://github.com/laravel/framework/pull/53872whereDoesntHaveRelation
, whereMorphDoesntHaveRelation
та їх варіацій з OR
від @andrey-helldar в https://github.com/laravel/framework/pull/53996RefreshDatabase
була зафіксована від @SjorsO в https://github.com/laravel/framework/pull/53997Illuminate\Support\Uri
при тестуванні HTTP-запитів від @crynobone в https://github.com/laravel/framework/pull/54038null
та *
ключа в data_get
від @jwjenkin в https://github.com/laravel/framework/pull/54059