Når du kalder en statisk metode på din modelklasse, returnerer den en flydende forespørgsel som DB::table('yourmodeltable')->metode
. Hvis du husker det, vil du hurtigt indse, at det er muligt at foretage enhver forespørgsel med Eloquent-modeller.
For nu at opnå større ydeevne kan du bruge SQLs DATE() fungere. Mit eksempel nedenfor er ikke testet, så du er velkommen til at rette det.
// i morgen -1 uge returnerer morgendagens 00:00:00 minus 7 dage// du vil måske finde på din egen dato tho$date =new DateTime('i morgen -1 uge');/ / DATE(objekttid) gør det til en 'ÅÅÅÅ-MM-DD'-streng//-poster grupperes derefter efter den string$days =Object::where('objecttime', '>', $date) ->group_by(' date') ->order_by('date', 'DESC') // eller ASC ->get(array( DB::raw('DATE(`objecttime`) AS `date`'), DB::raw(' COUNT(*) som `count`') ));foreach ($days as $day) { print($day->date . ' - '. $day->count);}
Dette skulle udskrive noget som:
2013-03-09 - 132013-03-10 - 302013-03-11 - 932013-03-12 - 692013-03-13 - 1312013-03-14 - 1852015 -0 /kode>
Rediger:
Den foreslåede tilgang ovenfor returnerer forekomster af Eloquent Model, som kan virke underlige, især hvis du var_dump($days)
. Du kan også bruge Fluents list()
metode til at opnå det samme.
$date =new DateTime('i morgen -1 uge');// lists() accepterer ikke rå forespørgsler,// så du skal angive SELECT-sætningen$days =Object::select(array ( DB::raw('DATE(`objekttid`) som `dato`'), DB::raw('COUNT(*) som `count`') )) ->where('created_at', '>', $date) ->group_by('date') ->order_by('date', 'DESC') // eller ASC ->lists('count', 'date');// Notice lists returnerer et associativt array med dets anden og// valgfri param som nøglen, og den første param som værdien foreach ($days as $date => $count) { print($date . ' - ' . $count);}