2017-03-29 2 views
0

ich mit created_at Spalte DB-Abfrage mit durch angewendet Gruppe, aber ich mag es eloquentWie alle Monat Rekordzählimpuls in Laravel bekommen

Ausgabe von Laravel zu tun, so sein sollte: -

Array 
(
    [1] => 2 
    [2] => 3 
    [3] => 7 
    [4] => 4 
    [5] => 5 
    [6] => 7 
    [7] => 2 
    [8] => 9 
    [9] => 0 
    [10] => 4 
    [11] => 0 
    [12] => 0 
) 

Bitte geben Sie mir Hilfe, um dies zu tun.

+0

Mögliche Duplikate von [Laravel Eloquent Ergebnisse nach Tagen gruppiert] (http://stackoverflow.com/questions/20603075/laravel-eloquent-get-results-grouped-by-days) – apokryfos

Antwort

1

Bitte versuchen Sie die folgenden Schritte: -

  1. Führen Sie den Composer aus, um das Paket zu installieren: Composer erfordert nesbot/carbon
  2. Oben auf Ihrem Code: Verwenden Sie Carbon \ Carbon;

nehme ich Modell Benutzer haben,

$users = User::select('id', 'created_at') 
->get() 
->groupBy(function($date) { 
    //return Carbon::parse($date->created_at)->format('Y'); // grouping by years 
    return Carbon::parse($date->created_at)->format('m'); // grouping by months 
}); 

$usermcount = []; 
$userArr = []; 

foreach ($users as $key => $value) { 
    $usermcount[(int)$key] = count($value); 
} 

for($i = 1; $i <= 12; $i++){ 
    if(!empty($usermcount[$i])){ 
     $userArr[$i] = $usermcount[$i];  
    }else{ 
     $userArr[$i] = 0;  
    } 
} 

Hoffe, es wird Ihnen helfen, Array wie das zu machen.

+0

Wow Ismael, es ist Arbeit für i war das gleiche mit Laravel eloquent, Danke! –

+0

Am meisten Willkommen :) –

0

Wenn Ihr created_at Spalte DATETIME- ist, können Sie Gruppe es wie diese

Entity::orderBy(...)->groupBy(DB::raw('MONTH(created_at)')) 

Sie können auch den Monat im Voraus wählen

Entity::select(DB::raw('MONTH(created_at) as month')->groupBy('month')->get()->keyBy('month'); 
Verwandte Themen