Команда Laravel випустила версію 12.4.0, що включає метод pipe() для побудови запитів, можливість умовно пропускати міграції, метод Arr::sole() та багато іншого
Тім Макдональд додав метод 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(), подібний до колекцій. Метод 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');
Люк Кузміш додав метод 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() для отримання атрибутів моделі, виключаючи певні ключі. Цей метод є оберненим до only():
$user->except('id', 'email');
Гюнтер Дебрауер додав метод assertDoesntThrow() для зручної перевірки, що блок коду не викликає винятків:
$this->assertDoesntThrow(fn () => (new ProcessOrder)->execute());
Цей метод задокументовано у документації HTTP тестів.
Фаісал Вахабалі додав методи 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. Наступні примітки є частиною журналу змін:
AsHtmlString від @ralphjsmitArr::sole() від @ralphjsmitApiInstallCommand від @sajjadhossainshohagrelated від @browner12QueueFake::listenersPushed() від @cosmastech@return документацію на конструкторах від @browner12new Collection замість Collection::make від @AhmedAlaa4611whereNull і whereNotNull у AssertableJson від @faissalouxIlluminate\Queue\Jobs\Job::getJobId() та Illuminate\Queue\Jobs\DatabaseJob::getJobId() від @petrknapshouldRun до міграцій від @danmatthewsUri запобігання пустому рядку запиту від @rojtjoFileViewFinder від @imanghafoori1null від @willrowepipe для побудови запитів від @timacdonaldLog::withoutContext для видалення вибраного контексту з майбутніх логів від @mattroylloydExpression до параметра $value у методі QueryBuilder having() від @faissalouxwithAttributes на Eloquent Builder від @AndrewMastЧи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу