2012-11-01 72 views
1

我正在使用樹的行爲,當我通過查詢 - >查找('螺紋',...) - 正如所料 - 我得到樹回來。Cakephp 2「連接」查詢的其他連接

但我想更多的加入發生,所以是這樣的:

$data = $this->Category->find('threaded', array(
    'joins' => array(
     array('table' => 'videos', 
      'alias' => 'Video', 
      'type' => 'LEFT', 
      'conditions' => array(
       'Category.id = Video.category_id', 
      ) 
     ) 
    ) 
)); 

類別的hasMany 視頻,但視頻不是一棵樹,只是相關的。

我可以使用的線程查詢?

回答

1

爲了產生「螺紋」輸出蛋糕1)調用一個查找('全部),然後2)通過設置::巢()函數將所得到的數組。

所以剛使用標準查找+自定義加入你的輸出,那麼只需使用Set::nest

(注:Hash已在蛋糕2代替Set,但蛋糕還是使用Set內部雙方將現在的工作。 。Hash::nest

所以,如果你看看蛋糕的model.php,巢函數被調用,像這樣:

return Set::nest($results, array(
      'idPath' => '/' . $this->alias . '/' . $this->primaryKey, 
      'parentPath' => '/' . $this->alias . '/' . $parent 
     )); 

使用,作爲一個模板FO你的電話。對於您的數據它看起來像這樣:

return Set::nest($results, array(
      'idPath' => '/Category/id', 
      'parentPath' => '/Category/parent_id'   )); 
+0

另一個有趣的問題是我如何可以限制此查詢一個父節點。這當然嵌套在應用程序代碼中,所以我需要查詢所有元素,因爲我事先不知道孩子們是什麼。嗯,我可能會打開另一個問題或手動創建查詢。 – Sam

+0

怎麼樣:在您的原始查找調用中,只需將其中一個條件設置爲''parent_id'=> $ your_parent_id'? – Costa

+0

這是一棵樹,你還需要子節點 – Sam