Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel Eloquent erhält nach Tagen gruppierte Ergebnisse

Ich glaube, ich habe dafür eine Lösung gefunden, der Schlüssel ist die DATE()-Funktion in mysql, die eine DateTime in nur Date:

umwandelt
DB::table('page_views')
      ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as views'))
      ->groupBy('date')
      ->get();

Dies ist jedoch nicht wirklich eine Laravel Eloquent-Lösung, da dies eine rohe Abfrage ist. Folgendes ist, was ich mir in Eloquent-ish-Syntax ausgedacht habe. Die erste where-Klausel verwendet Kohlenstoffdaten zum Vergleichen.

$visitorTraffic = PageView::where('created_at', '>=', \Carbon\Carbon::now->subMonth())
                            ->groupBy('date')
                            ->orderBy('date', 'DESC')
                            ->get(array(
                                DB::raw('Date(created_at) as date'),
                                DB::raw('COUNT(*) as "views"')
                            ));