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

问题描述 投票:4回答:4

我试图获取上个月所有的记录,到目前为止我设法从上个月获得所有记录,但到今天为止,我不知道我怎么能只在上个月获得

$revenueMonth = Callback::where('created_at', '>=', Carbon::today()->startOfMonth()->subMonth())->sum('payment');
php mysql laravel eloquent php-carbon
4个回答
4
投票

更明确的解决方案:

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

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

这就是你在找什么:)

希望它能帮到你:)


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)


0
投票

更新了您的答案的雄辩版本

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

$revenueLastMonth = Callback::whereBetween('created_at',[$fromDate,$tillDate])->get();
© www.soinside.com 2019 - 2024. All rights reserved.