1
votes

Laravel et MySQL obtiennent des données par semaine

J'ai cette fonction qui récupère les données de MySQL par mois en utilisant carbon

   ->where(\DB::raw('week(created_at)'), Carbon::today()->week)

Cela fonctionne bien ce que je veux faire est d'obtenir les données par semaine

J'ai essayé de modifier le code comme ceci:

$calls = \DB::table('calls') 
        ->where('owned_by_id', $report->id) 
        ->where(\DB::raw('month(created_at)'), Carbon::today()->month)
        ->get();
        $report->callsCount = $calls->count();

mais j'obtiens une erreur dans Laravel

"Semaine" getter inconnue


2 commentaires

vous voulez obtenir des données à partir de quelle semaine, c'est-à-dire d'aujourd'hui aux 7 jours précédents ??


`-> where (\ DB :: raw ('month (created_at)'), Carbon :: today () -> month)` Ce code est exactement le même, alors qu'avez-vous modifié?


3 Réponses :


0
votes

Utilisez whereBetween avec deux instances de date carbone.

->whereBetween('created_at', [
    Carbon\Carbon::parse('last monday')->startOfDay(),
    Carbon\Carbon::parse('next friday')->endOfDay(),
])


2 commentaires

Merci beaucoup mais ça n'a pas fonctionné pour moi idk pourquoi


Quels résultats avez-vous et qu'attendez-vous?



1
votes

Vous avez besoin de filtrer la date par semaine qui signifie la plage de dates essayez ceci

$calls = \DB::table('calls') 
    ->where('owned_by_id', $report->id) 
    ->whereBetween('created_at', [Carbon::now()->subWeek()->format("Y-m-d H:i:s"), Carbon::now()])
    ->get();
$report->callsCount = $calls->count();

Cela signifie pour obtenir toutes les données des 7 derniers jours à maintenant en fonction du carbone docs https://carbon.nesbot.com/docs/ et laravel docs https://laravel.com/docs/5.8/queries#where-clauses


2 commentaires

Merci beaucoup exactement ce que je voulais Merci


Rabena yebareklak: D



0
votes

Comme le dit @Abrar, si vous devez compter le nombre total d'appels du mois en cours, vous pouvez utiliser whereB Between:

$calls = \DB::table('calls') 
        ->where('owned_by_id', $report->id) 
        ->whereBetween('created_at', [
            now()->locale('en')->startOfWeek(),
            now()->locale('en')->endOfWeek(),
        ])
        ->get();
$report->callsCount = $calls->count();

Mais vous voulez compter le nombre total d'appels par semaine dont vous avez besoin pour utiliser groupBy. Bonne chance!


2 commentaires

Merci beaucoup pour votre réponse mais j'ai la méthode locale n'existe pas


peut-être avez-vous une ancienne version de Laravel et n'avez pas l'assistant now ()