按 Laravel 中的间隔日期过滤记录

Filter records by interval date in Laravel

我正在创建一个过滤器来获取信用卡的费用,以生成发票。

但我只让它按月和年过滤。我需要获取天数间隔、月份和年份的记录。

例如:

如何获取上个月第 25 天到次日 25 之间的所有费用?

这是我按月筛选的查询:

    $thisMonth = $now->format('m');
    $thisYear = $now->format('Y');

    $cc_expenses = Expense::where([
        ['bank_id', $bank->id],
        ['payment_method', 1],
        ['parcels', NULL]
    ])
        ->whereYear('date', $thisYear)
        ->whereMonth('date', $thisMonth)
        ->get();

但是这样我就得不到上个月第25天和最后一天之间的记录了。

提前致谢!

您可以使用

$previousMonthLastDay = now()->subMonth()->setDay(25)->setHour(0)->setMinute(0)->setSecond(0);

 ->whereBetween('date', [$previousMonthLastDay, now()])

我认为没有人需要设置从现在开始的未来时间,但如果你需要,你可以这样做$previousMonthLastDay without subMonth()

如果您现在的日期是 2022-04-13 12:22:10 ,$previousMonthLastDay 将类似于 2022-04-25 00:00:00