2017-10-26 1 views
0

Ich möchte Daten für verschiedene Zeiträume wie heute, insgesamt, diese Woche usw. von zählen und abrufen DATETIME erstellt Feld.CakePHP 3: Wie kann man Daten für verschiedene Zeiträume in einer Abfrage zählen und abrufen?

Wie wird zum Beispiel this_week gezählt?

Hier Code beginnt:

public function findTotalRegistered(Query $query, Array $options) 
    { 
    $total = $query->func()->count('id'); 

    $query 
     ->select([ 
     'total' => $total, 
     //'today' => $today, 
     //'this_week' => $this_week, 
     //'this_month' => $this_month, 
     //'this_year' => $this_year 
     ]); 

    return $query; 
    } 

Antwort

0

Sie können dies erreichen, indem Unter Abfrage tun:

public function findTotalRegistered(Query $query, Array $options) 
{ 
    $total = $query->func()->count('id'); 

    $query 
     ->select([ 
      'total' => $total, 
      'today' => $query->where('DATE(created) = CURDATE()')->count(), 
      'this_week' => $query->where('YEARWEEK(DATE(created), 1) = YEARWEEK(CURDATE(), 1))')->count(), 
      'this_month' => $query->where('DATE_SUB(NOW(), INTERVAL 1 MONTH)')->count(), 
      'this_year' => $query->where('YEAR(created) = YEAR(CURDATE())')->count() 
     ]) 
     ->group(created); 

    return $query; 
} 

Dank

+0

Ich habe versucht, die gleiche Sache, es hat nicht funktioniert. – Salines

+0

Möglicherweise müssen Sie dies in benutzerdefinierte Abfrage ändern. –

Verwandte Themen