1. ホーム
  2. php

[解決済み]LaravelとEloquentを使用して2つの日付の間でクエリを実行するにはどうすればよいですか?

2022-04-18 07:14:59

質問

特定の日付から特定の日付までのレポートを表示するレポートページを作ろうとしています。以下は私の現在のコードです。

$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();

これがSQLで何をするかというと select * from table where reservation_from = $now .

このクエリがあるのですが、Eloquentクエリに変換する方法がわかりません。

SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to

上記のコードをeloquent queryに変換するにはどうしたらよいでしょうか?よろしくお願いします。

どのように解決するのですか?

その whereBetween メソッドは、あるカラムの値がその間にあるかどうかを検証します。 の2つの値があります。

$from = date('2018-01-01');
$to = date('2018-05-02');

Reservation::whereBetween('reservation_from', [$from, $to])->get();


場合によっては、日付範囲を動的に追加する必要があります。ベースとなるのは 革新的 のコメントにあるように、このようにすることができます。

Reservation::all()->filter(function($item) {
  if (Carbon::now()->between($item->from, $item->to)) {
    return $item;
  }
});


さらに条件を追加したい場合は、以下のようにします。 orWhereBetween . もし、ある日付間隔を除外したい場合は whereNotBetween .

Reservation::whereBetween('reservation_from', [$from1, $to1])
  ->orWhereBetween('reservation_to', [$from2, $to2])
  ->whereNotBetween('reservation_to', [$from3, $to3])
  ->get();


その他の便利なwhere節。 whereIn , whereNotIn , whereNull , whereNotNull , whereDate , whereMonth , whereDay , whereYear , whereTime , whereColumn , whereExists , whereRaw .

LaravelのWhere句に関するドキュメントです。