🐷

Laravel 11.42 で新たな日付クエリメソッドが導入されました

2025/02/12に公開

⚠️: 海外の記事をchatGPTで要約しただけのもの、主に自分用


新しい日付クエリメソッド一覧

wherePast()

概要:
日付カラムが過去の日付であるレコードを取得します。

使用例:

$pastRecords = Model::wherePast('date_column')->get();

whereNowOrPast()

概要:
日付カラムが現在または過去のレコードを取得します。

使用例:

$records = Model::whereNowOrPast('date_column')->get();

orWherePast()

概要:
既存の条件に対して「または過去」の条件を OR で追加します。

使用例:

$records = Model::where('other_column', '=', 'value')
    ->orWherePast('date_column')
    ->get();

orWhereNowOrPast()

概要:
既存の条件に対して「または現在または過去」の条件を OR で追加します。

使用例:

$records = Model::where('other_column', '=', 'value')
    ->orWhereNowOrPast('date_column')
    ->get();

whereFuture()

概要:
日付カラムが未来の日付であるレコードを選択します。

使用例:

$futureRecords = Model::whereFuture('date_column')->get();

whereNowOrFuture()

概要:
日付カラムが現在または未来のレコードを取得します。

使用例:

$records = Model::whereNowOrFuture('date_column')->get();

orWhereFuture()

概要:
既存の条件に対して「または未来」の条件を OR で追加します。

使用例:

$records = Model::where('other_column', '=', 'value')
    ->orWhereFuture('date_column')
    ->get();

orWhereNowOrFuture()

概要:
既存の条件に対して「または現在または未来」の条件を OR で追加します。

使用例:

$records = Model::where('other_column', '=', 'value')
    ->orWhereNowOrFuture('date_column')
    ->get();

新メソッドがもたらす改善点

従来、日付ベースのフィルタリングは以下のように記述していました。

$pastRecords = Model::where('date_column', '<', now())->get();

新たなメソッドを使用することで、上記のコードがよりシンプルかつ直感的に記述できるようになり、意図が明確に伝わるようになりました。


使用例

1. 期限切れのサブスクリプションを全件取得

$expiredSubscriptions = Subscription::wherePast('expires_at')->get();

2. 現在または将来に開催されるイベントを取得

$upcomingEvents = Event::whereNowOrFuture('event_date')->get();

3. 過去に注文されたオーダーを取得

$pastOrders = Order::wherePast('created_at')->get();

その他追加メソッドと合わせたまとめ

// New methods in Laravel 11.42:

// 過去の日付に一致するデータを取得
Model::wherePast($columns)

// 現在または過去の日付に一致するデータを取得
Model::whereNowOrPast($columns)

// 過去の日付に一致するデータを OR 条件で追加
Model::orWherePast($columns)

// 現在または過去の日付に一致するデータを OR 条件で追加
Model::orWhereNowOrPast($columns)

// 未来の日付に一致するデータを取得
Model::whereFuture($columns)

// 現在または未来の日付に一致するデータを取得
Model::whereNowOrFuture($columns)

// 未来の日付に一致するデータを OR 条件で追加
Model::orWhereFuture($columns)

// 現在または未来の日付に一致するデータを OR 条件で追加
Model::orWhereNowOrFuture($columns)

// 過去または未来の日付に一致するデータを取得(比較演算子と論理演算子を指定可能)
Model::wherePastOrFuture($columns, $operator, $boolean)

// 今日の日付に一致するデータを取得(デフォルトで AND 条件)
Model::whereToday($columns, $boolean = 'and')

// 今日より前の日付に一致するデータを取得
Model::whereBeforeToday($columns)

// 今日または今日より前の日付に一致するデータを取得
Model::whereTodayOrBefore($columns)

// 今日より後の日付に一致するデータを取得
Model::whereAfterToday($columns)

// 今日または今日より後の日付に一致するデータを取得
Model::whereTodayOrAfter($columns)

// 今日の日付に一致するデータを OR 条件で追加
Model::orWhereToday($columns)

// 今日より前の日付に一致するデータを OR 条件で追加
Model::orWhereBeforeToday($columns)

// 今日または今日より前の日付に一致するデータを OR 条件で追加
Model::orWhereTodayOrBefore($columns)

// 今日より後の日付に一致するデータを OR 条件で追加
Model::orWhereAfterToday($columns)

// 今日または今日より後の日付に一致するデータを OR 条件で追加
Model::orWhereTodayOrAfter($columns)

// 今日より前または後の日付に一致するデータを取得(比較演算子と論理演算子を指定可能)
Model::whereTodayBeforeOrAfter($columns, $operator, $boolean)

// P.S. $columns にはカラム名を1つ指定することも、複数のカラムを配列で指定することも可能

元記事

https://nabilhassen.com/laravel-1142-introduces-new-date-query-methods

https://x.com/PovilasKorop/status/1889584733387927663

Discussion