sql >> Database teknologi >  >> RDS >> Mysql

Laravel Eloquent får resultater grupperet efter dage

Jeg tror, ​​jeg har fundet en løsning på dette, nøglen er DATE()-funktionen i mysql, som konverterer en DateTime til kun Date:

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

Dette er dog ikke rigtig en Laravel Eloquent-løsning, da dette er en rå forespørgsel. Det følgende er, hvad jeg kom frem til i Eloquent-ish syntaks. Den første, hvor klausulen bruger kuldatoer til at sammenligne.

$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. Konverter 'smalldatetime' til 'date' i SQL Server (T-SQL-eksempler)

  2. Korrekt brug af php mysqli autocommit og rollback

  3. Hvor mange tegn kan du gemme med 1 byte?

  4. Database/SQL:Hvordan gemmer man data om længde/breddegrad?