我正在try 创建一个报告页面,显示从特定日期到特定日期的报告.以下是我当前的代码:

$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 的查询?提前谢谢你.

推荐答案

The 100 method verifies that a column's value is between two values.

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

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

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

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子句:whereInwhereNotInwhereNullwhereNotNullwhereDatewhereMonthwhereDaywhereYearwhereTimewhereColumn whereExistswhereRaw.

Laravel docs about Where Clauses.

Php相关问答推荐

在WooCommerce中处理客户总支出中的退款

将带有值的属性添加到WooCommerce产品,保留现有属性

与会者在WooCommerce中按购物车项目数量自定义 checkout 字段

PHP -多维数组到一维数组

WHERE方法不能与有效查询Laravel一起使用

使用ESI的Symfony Sulu清漆

如果日期是过go 日期,则隐藏事件发布类型

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

为WooCommerce中存储一些数据的购物车项目添加复选框

Filament v3:具有 hasMany 和 BelongsTo 的关系管理器

有没有办法获取触发流操作的页面的 URI?

如何显示所有数组数据而不仅仅是最后的结果

通过存储库检索 Blade 上的单值数据 出错

如何使用不同的方法编写嵌套连接查询并将两列连接成一列在 laravel 查询生成器中

跟踪通过 WooCommerce 分层定价表插件进行的购买

基于WooCommerce中的产品变体自定义感谢页面跳转

Woocommerce的数量和价格条件

如何在PHP中对多个脚本调用进行排队?

优化后的标题:如何在WooCommerce我的帐户编辑表单中添加账单字段

在 PHP 中验证签名