Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Laravel Eloquent obtém resultados agrupados por dias


Acredito ter encontrado uma solução para isso, a chave é a função DATE() no mysql, que converte um DateTime em apenas Date:
DB::table('page_views')
      ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as views'))
      ->groupBy('date')
      ->get();

No entanto, esta não é realmente uma solução do Laravel Eloquent, já que esta é uma consulta bruta. O seguinte é o que eu criei na sintaxe do Eloquent. A primeira cláusula where usa datas de carbono para comparar.
$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"')
                            ));