ホームページ >バックエンド開発 >PHPチュートリアル >Laravel'のクエリビルダーで相対日付ヘルパーを使用します

Laravel'のクエリビルダーで相対日付ヘルパーを使用します

Johnathan Smith
Johnathan Smithオリジナル
2025-03-05 15:29:10349ブラウズ

Using Relative Date Helpers in Laravel's Query Builder

Laravelバージョン11.42は、日付関連のクエリロジックを簡素化して、実用的な相対日付クエリビルダーメソッドのセットを導入します。これらのメソッドを使用するためにすべてのアプリケーションをリファクタリングする必要はありませんが、モデルの相対日付ロジックに対して、より簡潔で読みやすい利点を提供します。 Articleモデルの例で見てみましょう。

特定のステータスで公開された記事を取得するための範囲があり、published_at日付は現在よりも等しいか等しくなければならないとします。

use Illuminate\Database\Eloquent\Builder;
use App\Models\Article;

public function scopeActive(): Article|Builder
{
    return $this->where('status', ArticleStatus::Published)
                ->where('published_at', '<=', now());
}
コードの他の場所でこの範囲を使用して、記事をアクティブな記事にのみ制限できます。

Article::with('user', 'category', 'tags')
    ->active()
    ->orderByDesc('published_at')
    ->limit(20)
    ->get();
laravel 11.42を使用すると、相対日付メソッドを使用するために

メソッドを少し調整できます。 scopeActive()メソッドは、元のロジックwhereNowOrPastに一致させることができます

$this->where('status', ArticleStatus::Published)
     ->whereNowOrPast('published_at');
クエリビルダーを使用して

とマークされた記事を見つけたい場合は、将来的にはPublishedメソッドを使用できます:whereFuture()

$this->where('status', ArticleStatus::Published)
     ->whereFuture('published_at');
今日の日付よりも早いまたは遅い記事を見つけたい場合はどうなりますか?新しい相対日付ヘルパー関数には、

およびorバリアントが含まれます。 not Laravel v11.42に追加されたすべての新しい相対日付メソッドについては、プルリクエスト#54408をチェックしてください。これらの方法は、

と呼ばれる新機能にあります。
$this->whereAfterToday('published_at')
     ->orWhereBeforeToday('published_at');

以上がLaravel&#039;のクエリビルダーで相対日付ヘルパーを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。