检索上个月的所有行 (Laravel + Eloquent)

Retrive all rows from last month (Laravel + Eloquent)

我正在尝试获取属于上个月的所有记录,到目前为止,我设法获取了上个月的所有记录,但到目前为止,我不确定如何只获取上个月的记录

$revenueMonth = Callback::where('created_at', '>=', Carbon::today()->startOfMonth()->subMonth())->sum('payment');

试试这个解决方案:

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->subDays(30)->toDateTimeString()
);

您将获得过去 30 天的所有回调。

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->firstOfMonth()->toDateTimeString()
);

获取当前月份。

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->startOfMonth()->subMonth()->toDateString()
);

上个月开始。

已更新

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->subMonth()->toDateTimeString()
);

这就是您要找的:)

希望对您有所帮助:)

已更新 eloquent 你的答案版本

$fromDate = Carbon::now()->subMonth()->startOfMonth()->toDateString();
$tillDate = Carbon::now()->subMonth()->endOfMonth()->toDateString();

$revenueLastMonth = Callback::whereBetween('created_at',[$fromDate,$tillDate])->get();

None 的答案让我到达了我想去的地方:(。

我有一个解决方案,但我觉得它很丑,希望它能变得更干净

$fromDate = Carbon::now()->subMonth()->startOfMonth()->toDateString();
$tillDate = Carbon::now()->subMonth()->endOfMonth()->toDateString();

$revenueLastMonth = Callback::whereBetween(DB::raw('date(created_at)'), [$fromDate, $tillDate])->get();

这会给出我正在寻找的结果,这是我的记录:

2017-09-07 09:46:43
2017-09-07 09:46:43
2017-09-07 09:46:43
2017-09-02 09:46:43
2017-08-07 09:46:43

我希望它 return 仅记录 2017 年 8 月 (2017-08-07 09:46:43)

您的问题更清晰的解决方案:

$revenueMonth = Callback::whereMonth(
    'created_at', '=', Carbon::now()->subMonth()->month
);