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

Kla*_*aus 5 php mysql laravel eloquent php-carbon

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

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

Odi*_*der 14

更清晰的解决您的问题:

$revenueMonth = Callback::whereMonth(
    'created_at', '=', Carbon::now()->subMonth()->month
);
Run Code Online (Sandbox Code Playgroud)

  • 只是想指出这将取最后一个月的整数并返回与该月匹配的所有年份的记录。假设现在是 11 月,Carbon 将返回“10”。因此,此查询将匹配 created_at = '2018-10-01 12:23:34' 并且它也会匹配 created_at = '2015-10-10 13:24:35'...而不是 _just_ 上个月。它返回的 SQL 基本上是月 (created_at) = 10。 (7认同)

小智 6

您的答案的更新雄辩版本

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

$revenueLastMonth = Callback::whereBetween('created_at',[$fromDate,$tillDate])->get();
Run Code Online (Sandbox Code Playgroud)


Odi*_*der 5

试试这个解决方案:

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->subDays(30)->toDateTimeString()
);
Run Code Online (Sandbox Code Playgroud)

您会收到过去 30 天的所有回调。

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->firstOfMonth()->toDateTimeString()
);
Run Code Online (Sandbox Code Playgroud)

获取当月。

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->startOfMonth()->subMonth()->toDateString()
);
Run Code Online (Sandbox Code Playgroud)

上个月开始。

更新

$revenueMonth = Callback::where(
    'created_at', '>=', Carbon::now()->subMonth()->toDateTimeString()
);
Run Code Online (Sandbox Code Playgroud)

这就是你要找的:)

希望能帮到你:)