从上个月开始回复所有行(Laravel + Eloquent)

时间:2017-09-07 12:23:12

标签: php mysql laravel eloquent php-carbon

我正在尝试获取属于上个月的所有记录,到目前为止,我设法从上个月获得所有记录,但到今天为止,我不确定如何才能获得上个月的记录

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

4 个答案:

答案 0 :(得分:4)

更明确的解决方案:

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

答案 1 :(得分:1)

尝试此解决方案:

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

这就是你在找什么:)

希望它会对你有所帮助:)。

答案 2 :(得分:1)

没有任何答案让我到达我想去的地方:(。

我有一个解决方案,但我觉得它很难看,希望它可以变得更干净

$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

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

答案 3 :(得分:0)

<强>已更新 雄辩的答案

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

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