sql >> Databasteknik >  >> RDS >> Mysql

Laravel Eloquent får resultat grupperade efter dagar

Jag tror att jag har hittat en lösning på detta, nyckeln är DATE()-funktionen i mysql, som konverterar en DateTime till bara Date:

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

Detta är dock inte riktigt en Laravel Eloquent-lösning, eftersom det här är en rå fråga. Följande är vad jag kom fram till i Eloquent-ish syntax. Den första där klausulen använder koldatum för att jämföra.

$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"')
                            ));


  1. Duplicera/kopiera poster i samma MySQL-tabell

  2. Hur CURDATE() fungerar i MariaDB

  3. 3 sätt att räkna antalet systemtabeller i en SQL Server-databas

  4. MySQL Trigger Update med välj från en annan tabell