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

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

这在普通SQL中所做的是从表中选择*,其中reservation_from = $now。

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

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

如何将上面的代码转换为雄辩的查询?


当前回答

另一种方法:

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

其他回答

另一种方法:

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

如果你想检查当前日期是否存在于db中的两个日期之间: =>在这里,如果员工的申请从和到日期在今天存在,则查询将获得申请列表。

$list=  (new LeaveApplication())
            ->whereDate('from','<=', $today)
            ->whereDate('to','>=', $today)
            ->get();

我知道这可能是一个老问题,但我刚刚发现自己在一个Laravel 5.7应用程序中实现了这个功能。下面是我的工作。

 $articles = Articles::where("created_at",">", Carbon::now()->subMonths(3))->get();

您还需要使用Carbon

use Carbon\Carbon;

让我用准确的时间戳添加正确的语法

之前

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

$from = date('Y-m-d', strtotime($request->from));
$to = date('Y-m-d', strtotime($request->to));
Reservation::whereBetween('reservation_from', [$from, $to])->get();

注意:如果您以字符串形式存储日期,那么请确保在from和to中传递准确的格式。它将与DB匹配。

你可以使用DB::raw(")使列作为日期MySQL使用whereBetween函数如下:

    Reservation::whereBetween(DB::raw('DATE(`reservation_from`)'),
    [$request->from,$request->to])->get();