Підтримка конвеєрів у Query Builder в Laravel 12.4

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 квітня, 2025
Досліджуйте нові можливості третьої версії Laravel 12.4.0, включаючи методи `pipe()` для конструктора запитів і вибіркове пропускання міграцій! Занурюйтесь у деталі оновлень, які покращать вашу розробку та зроблять її ще більш ефективною

Команда Laravel випустила версію 12.4.0, що включає метод pipe() для побудови запитів, можливість умовно пропускати міграції, метод Arr::sole() та багато іншого

# Метод pipe() для побудови запитів

Тім Макдональд додав метод pipe() як до базового, так і до Eloquent побудовника запитів. Його функціонал аналогічний методу Collection::pipe():

$records = DB::query()
    ->from('...')
    // ...
    ->tap(new TappableScope) // повертає запит
    ->pipe(new ActionScope); // виконує запит і повертає результат

# Пропуск міграцій

Дан Метьюз додав можливість програмно пропускати міграції, включивши необов'язковий метод shouldRun():

return new class extends Migration
{
   public function shouldRun()
   {
        return Feature::active(Flights::class);
   }
   // ...
}

Метод shouldRun() враховується для команд migrate та rollback. Деталі дивись у документації з міграцій.

# Метод Arr::sole()

Ральф Дж. Сміт реалізував метод Arr::sole(), подібний до колекцій. Метод sole підтримує передачу простого масиву, який повертає перший елемент лише, якщо це єдиний елемент. Також можна передати виклик як другий аргумент:

Arr::sole(['foo']); // "foo"
 
// @throws \Illuminate\Support\ItemNotFoundException
Arr::sole(['foo'], fn (string $value) => $value === 'baz');
 
// @throws \Illuminate\Support\MultipleItemsFoundException
Arr::sole(['baz', 'foo', 'baz'], fn (string $value) => $value === 'baz');

# Queue fake Helper для слухачів

Люк Кузміш додав метод listenersPushed(), який дозволяє стверджувати, що слухач черги був доданий під час тесту:

Queue::fake();
event(new SomeEvent(value: 'look, a value!'));
 
$this->assertCount(
    1,
    Queue::listenersPushed(
        SomeEventListener::class,
        fn (SomeEvent $event) => $event->value === 'look, a value!'
    )
);

# Метод Model except()

Вішал Чавда реалізував метод Model::except() для отримання атрибутів моделі, виключаючи певні ключі. Цей метод є оберненим до only():

$user->except('id', 'email');

# Метод assertDoesNotThrow

Гюнтер Дебрауер додав метод assertDoesntThrow() для зручної перевірки, що блок коду не викликає винятків:

$this->assertDoesntThrow(fn () => (new ProcessOrder)->execute());

Цей метод задокументовано у документації HTTP тестів.

# JSON-ствердження where Null і where Not Null

Фаісал Вахабалі додав методи whereNull() і whereNotNull() до екземплярів AssertableJson. Ось приклад з запиту:

// Використання:
fn (AssertableJson $json) => $json->whereNull('error')
 
// Приклад з тестів Фреймворку:
$assert = AssertableJson::fromArray([
    'bar' => 'value',
]);
 
$this->expectException(AssertionFailedError::class);
$this->expectExceptionMessage('Property [bar] should be null.');
 
$assert->whereNull('bar');

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

Повний список нових можливостей та оновлень можна переглянути нижче, а також диф між версіями 12.3.0 і 12.4.0 на GitHub. Наступні примітки є частиною журналу змін:

# v12.4.0

Популярні

Logomark Logotype

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

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

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу