Команда Laravel випустила версію v11.42, що включає нові шорткати для відносних дат, гнучку числову валідацію, JSON-ствердження для потокового контенту та багато іншого
Jason McCreary додав методи шорткатів для відносних дат у конструктор запитів, що дозволяє обмежувати дати в полях, наприклад, для пошуку записів у минулому, майбутньому, сьогодні, після сьогоднішнього дня тощо:
DB::table('invoices')
->wherePast('due_at')
->get();
DB::table('invoices')
->whereFuture('due_at')
->get();
DB::table('invoices')
->whereNowOrPast('due_at')
->get();
DB::table('invoices')
->whereNowOrFuture('due_at')
->get();
DB::table('invoices')
->whereToday('due_at')
->get();
DB::table('invoices')
->whereBeforeToday('due_at')
->get();
DB::table('invoices')
->whereAfterToday('due_at')
->get();
Крім вказаних вище методів, також включені варіанти or
та not
, а також можливість передавати масив назв колонок:
Усі ці методи мають варіанти
where
,or
іorWhereNot
. Всі методи також приймають масив назв колонок як перший аргумент. МетодwherePast
іwhereFuture
мають необов'язковий другий аргумент для встановлення$now
.
Більш детально про реалізацію можна дізнатися в Pull Request #54408.
Carlos Junior впровадив клас гнучкої числової валідації для зручного визначення правил числової валідації:
// До
$rules = [
'score' => 'numeric|integer|multiple_of:10|lte:some_field|max:100',
];
// Після
$rules = [
'score' => [
Rule::numeric()
->integer()
->multipleOf(10)
->lessThanOrEqual('some_field')
->max(100),
],
];
Vincent Bergeron додав методи missing()
та missingHidden()
у службу Context, які повертають булеве значення, якщо ключ контексту відсутній:
Context::add('url', $request->url());
Context::addHidden('hidden_url', $request->url());
Context::missing('url'); // false
Context::missing('missing_key'); // true
Context::missingHidden('url'); // true
Context::missingHidden('hidden_url'); // false
Günther Debrauwer додав можливість використовувати JSON-ствердження для потокових JSON-відповідей:
Route::get('/users', function () {
return response()->streamJson([
'data' => User::cursor(),
]);
});
$this->getJson('/users')
->assertJsonCount(10, 'data')
->assertJsonPath('data.*.id', $users->pluck('id')->all());
Повний список нових функцій та оновлень можна переглянути нижче, також доступний порівняльний аналіз між 11.41.0 та 11.42.0 на GitHub. Нижче наведено примітки до випуску, що безпосередньо взяті з чейнджлогів:
enum_value()
від @cosmastech у https://github.com/laravel/framework/pull/54432Number::currency()
від @benjibee у https://github.com/laravel/framework/pull/54456withAttributes
від @tontonsb у https://github.com/laravel/framework/pull/54422Builder
при клонуванні від @ralphjsmit у https://github.com/laravel/framework/pull/54477PendingBatch@ensureJobIsBatchable
від @cosmastech у https://github.com/laravel/framework/pull/54485Relation
від @cosmastech у https://github.com/laravel/framework/pull/54560