web-dev-qa-db-ja.com

先月のすべての行を取得します(Laravel + Eloquent)

私は先月に属するすべてのレコードを取得しようとしています。これまでのところ、先月からすべてを取得することができましたが、今日まで今日まで、どうすれば先月のみを取得できるのかわかりません

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

あなたの問題に対するより明確な解決策:

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

この解決策を試してください:

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

これはあなたが探しているものです:)

それがあなたを助けることを願っています:)

3
Odin Thunder

答えのどれも私が行きたいと思っているところに私を導きません:(。

私には解決策がありますが、それは醜いと思いますし、もっときれいにできるといいのですが

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

1
Klaus

[〜#〜]更新[〜#〜]あなたの答えの雄弁なバージョン

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

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