2011-08-18 69 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')) 
);