次のようなテーブルが 1 つあります。
id | date | customer_id | env_id | jobs
1 | 2012-11-20 | 200 | 100 | 10
2 | 2012-11-20 | 200 | 101 | 15
3 | 2012-11-20 | 200 | 102 | 12
4 | 2012-11-21 | 200 | 100 | 10
5 | 2012-11-21 | 200 | 101 | 12
6 | 2012-11-21 | 200 | 102 | 20
私が求めているのは、日付ごとにグループ化された結果です。
$usage = $this->Environment->DailyCount->find('all',
array(
'conditions' =>array('DailyCount.customer_id' => $user['customer_id']),
'group' => array('DailyCount.date'),
'recursive'=>-1));
しかし、それは1行しか返していません。3つすべてが必要です!
結果:
Array
(
[0] => Array
(
[DailyCount] => Array
(
[id] => 1
[date] => 2012-11-20
[customer_id] => 200
[env_id] => 100
[jobs] => 10
)
)
[1] => Array
(
[DailyCount] => Array
(
[id] => 4
[date] => 2012-11-21
[customer_id] => 200
[env_id] => 100
[jobs] => 10
)
)
)
結果の各日付の 3 つの行すべての後です - 3 つすべての env_id ジョブ カウントが必要です。
CakePHP でこれを行う方法や、MySQL でそのような結果を得る方法さえあれば、ケーキの方法を理解することができます。
----------- ハックソリューション ------------
自分の質問に答えられないので、質問を編集します
完璧な解決策ではありませんが、私にとってはうまくいき、迅速な解決策でした:
$dailyCount = $this->Environment->DailyCount->find('all',
array(
'conditions' => array('DailyCount.customer_id' => $user['customer_id']),
'order' => array('DailyCount.date DESC'),
'limit' => $limit,
'recursive'=>-1));
$usage = array();
foreach($dailyCount as $dc){
$usage[$dc['DailyCount']['date']][] = $dc;
}