web-dev-qa-db-fra.com

Récupérer toutes les lignes du mois dernier (Laravel + Eloquent)

J'essaie d'obtenir tous les enregistrements qui appartiennent au mois dernier, jusqu'à présent, j'ai réussi à obtenir tous les enregistrements du mois dernier, mais à ce jour, je ne sais pas comment je peux les obtenir uniquement pour le mois dernier

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

Solution plus claire pour votre problème:

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

Essayez ces solutions:

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

Vous obtenez tous les rappels des 30 derniers jours.

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

Obtenez pour le mois en cours.

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

Obtenez pour commencer le mois dernier.

MIS À JOUR

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

C'est ce que tu cherches :)

J'espère que cela vous aidera :)

3
Odin Thunder

Aucune des réponses ne m'amène là où je cherche à aller :(.

J'ai une solution mais je pense qu'elle est moche et j'espère qu'elle pourrait être rendue plus propre

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

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

Cela me donnera le résultat que je recherche, voici mes records:

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

Et je veux qu'il retourne UNIQUEMENT les enregistrements réalisés en août 2017 (2017-08-07 09:46:43)

1
Klaus

MISE À JOUR version éloquente de votre réponse

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

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