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

Laravel &multiple count forespørgsler ved hjælp af Eloquent

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);} 



  1. Hent det sidst indsatte række-id (med SQL-sætning)

  2. Opsætning af en geo-distribueret databaseklynge ved hjælp af MySQL-replikering

  3. Eksekverer du et php-script i javascript?

  4. PHP-filen kan ikke indtaste en del af koden