如何使用 Laravel 和 Eloquent 在两个日期之间进行查询?

新手上路,请多包涵

我正在尝试创建一个显示从特定日期到特定日期的报告的报告页面。这是我当前的代码:

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

这在普通 SQL 中的作用是 select * from table where reservation_from = $now

我在这里有这个查询,但我不知道如何将其转换为雄辩的查询。

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

如何将上面的代码转换为雄辩的查询?先感谢您。

原文由 wobsoriano 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 446
2 个回答

whereBetween 方法验证列的值是否介于两个值之间。

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

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


在某些情况下,您需要动态添加日期范围。根据 @Anovative 的评论,您可以这样做:

 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();


Other useful where clauses: whereIn , whereNotIn , whereNull , whereNotNull , whereDate , whereMonth , whereDay , whereYear , whereTime , whereColumn , whereExists , whereRaw .

Laravel 文档关于 Where 子句。

原文由 Peter Kota 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一种方式:

 use Illuminate\Support\Facades\DB;

$trans_from = date('2022-10-08');
$trans_to = date('2022-10-12');
$filter_transactions =  DB::table('table_name_here')->whereBetween('created_at', [$trans_from, $trans_to])->get();

原文由 codelone 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题