2011-08-18 29 views
1

enter image description hereCakephp:如何擺脫unwated連接?

我想擺脫CategoriesRecord數組。 我綁定使用型號:

$this->Category->bindModel(
       array('hasAndBelongsToMany' => 
        array(
         'Record' => 
         array(
          'className' => 'Record', 
          //'joinTable' => 'categories_records', 
          'foreignKey' => 'categories_id', 
          'associationForeignKey' => 'records_id', 
          'conditions' => array('Record.active' => 1) 
         ) 
        ) 
       ) 
     ); 

歡呼

回答

1

HABTM需要一箇中間表 - 這是joinTable你註釋掉的關係。默認情況下,這將使用名爲CategoriesRecord的AppModel實例,該實例映射到categories_records表。

你不能擺脫這個中間模型/表或habtm將無法正常工作。 (這是多對多關係的「連接表」)

確實沒有任何傷害將數組保留在返回的數據中 - 它實際上爲您提供了訪問每個相關ID值的便捷方法當建立表格/行動鏈接等

+0

如果確實是返回太多數據的問題 - 您可以始終使用afterFind回調循環查找結果並取消設置數組。 - 或者,您可以使用Set類在將它傳遞給視圖之前提取出您需要的內容。再說一次,如果沒有這個中間表,你就不會有多對多的關係。一旦你獲取了數據,你應該可以從每個結果中刪除該索引(特別是如果你不需要知道視圖中任何地方涉及哪兩個相關的id) –

1

由於jacktrade告訴Containable行爲是最好的解決辦法,如果你有大量的表格和relations.Even的,雖然你可以嘗試在飛行BindModel and Unbind Model

$this->Model->unbindModel(
    array('associationType' => array('associatedModelClassName')) 
);