2011-09-28 101 views
1

我在我的find查詢中遞歸設置爲Two,這很好,並且返回我想要的所有結果,但是我需要按遞歸查詢中Teo級別深度的結果對Day進行分組。CakePHP結合遞歸和組

這是我的:Project->Track->Lapse。但是我需要在賽道上逐日分組,我該怎麼做?

$project = $this->Project->find('all', array(
    'conditions' => array(
       'Project.id' => $id, 
       'Project.user_id' => $this->Auth->user('id') 
    ), 
    'recursive' => 2 
    ) 
); 

回答

2

恕我直言,蛋糕的ORM往往是非常令人失望的事情超越瑣碎。以下是我將如何找到解決方案:

  1. 首先,啓用調試級別2並查看Cake正在生成的查詢。這將取決於你所在的協會類型。如果它爲您的find()生成單個查詢,那麼您很幸運!只需在查找選項數組中添加一個「組」鍵,就完成了。

  2. 因爲蛋糕是可能產生一個以上的查詢,有兩種可能的解決方案:

    一)嘗試Containable。如果您能夠操作其選項來強制Cake使用正確的JOIN來構建單個查詢,那麼您已準備好將「組」選項添加到查找中。然而,我經常爲此而感到沮喪,並採取了以下的選擇。

    b)手動通知Cake關於必須使用的JOIN以便能夠對結果進行分組。您可以先解除綁定所有關聯模型(this可能有用),然後使用'joins' option強制連接。然後,您可以將「組」選項添加到查找中。

我實際上很頻繁地使用選項2b,不僅在我必須對結果進行分組時,還要根據關聯模型進行過濾。

+0

這是偉大的意見,謝謝! – benhowdle89