2017-10-26 18 views
0

DATETIMEでフィールドを作成して、今日、合計、今週などの異なる期間のデータをカウントして取得したいと考えています。CakePHP 3:1つのクエリで異なる期間のデータを数えたり取得する方法は?

たとえばthis_weekを数える方法は?ここで

がコードを開始している。

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

答えて

0

あなたは、サブクエリを行うことによって、これを達成することができます

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

おかげ

+0

を私はそれが動作しませんでした、同じことを試してみました。 – Salines

+0

これをカスタムクエリに変更する必要があります。 –

関連する問題