Допоміжні функції для дат у Laravel 11.42

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 13 лютого, 2025
Дізнайтеся про нові можливості в Laravel v11.42, включаючи зручні методи для роботи з датами та вдосконалену валідацію чисел. Чи готові ви дізнатися, як ці зміни можуть спростити вашу роботу?

Команда 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),
    ],
];

# Метод "missing" у Context

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

# JSON-ствердження для потокового контенту

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. Нижче наведено примітки до випуску, що безпосередньо взяті з чейнджлогів:

# v11.42.0