2012-11-22 23 views
2

只有一個結果,我有一個表,如下所示:CakePHP的集團通過字段返回每

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

但它只返回一行我想要所有三個!

結果:

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 
       ) 

     ) 
) 

我所有的三排在我的結果每個日期後 - 我需要所有三個env_id工作計數。

任何人都可以幫助CakePHP如何做到這一點,甚至如何在MySQL中獲得這樣的結果,我可以弄清楚蛋糕的方式!

HACK ----------- ------------解決方案

我不能回答我的問題,以便編輯問題

好沒有完美的解決方案,但工作對我來說,是一個快速的解決方案:

$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; 
} 
+0

如果你需要每個日期的所有3行,那麼你爲什麼分組?使用你的示例表,你在找什麼結果表? –

+0

你所得到的結果是正確的,你按用戶ID進行日期分組,所以應該有一個記錄 – Justin

+0

結果是好的。問題在於你對cakephp結果數組的理解。 – Alvaro

回答

0

您可以使用MySQL的GROUP_CONCAT()。如果你正在分組,那可能是你最好的選擇。