2012-08-02 77 views
0

我有模型命名为地方类别它们使用HABTM关系连接。现在,当我从地方读取特定字段时,我在结果中获得了其他字段。Cakephp HABTM删除额外的域

array(
'Place' => array(
    'id' => '8' 
), 
'Category' => array(
    (int) 0 => array(
     'id' => '2', 
     'CategoriesPlace' => array(
      'id' => '673', 
      'place_id' => '8', 
      'category_id' => '2' 
     ) 
    ), 
    (int) 1 => array(
     'id' => '3', 
     'CategoriesPlace' => array(
      'id' => '674', 
      'place_id' => '8', 
      'category_id' => '3' 
     ) 
    ), 
    (int) 2 => array(
     'id' => '5', 
     'CategoriesPlace' => array(
      'id' => '675', 
      'place_id' => '8', 
      'category_id' => '5' 
     ) 
    ) 
) 

我不想显示该CategoriesPlace阵列。任何想法如何?

回答

1

两个CakePHP的解决方案:

$this->Place->recursive=-1; 

查找之前。

或者:

$this->Place->contain(); 

contain docs

编辑: 对于输出的更大控制:

containable docs

地说:

public $actsAs = array('Containable'); 

在模型中。

然后:

$this->Place->find('all', array(
    'contain' => array(
     'Place', 
     'Category' => array(
      'fields'=>array('id') 
     ) 
    ) 
) 
); 

它可能无法正常工作的CakePHP添加所有需要执行查询的外键。

+0

'阵列( \t(INT)0 =>数组( \t \t '地点'=>数组( \t \t \t 'ID'=> '1' \t \t) \t) )' 现在这是我得到的结果。但是我需要** Category **数组在那里,只是不需要** CategoriesPlace **数组 – dinkan 2012-08-02 16:06:38

+0

啊。然后你使用可容纳的。我会更新答案。 – 2012-08-02 16:17:22

+0

它仍然不过滤我认为的HABTM关系领域。 http://stackoverflow.com/questions/4300262/containable-wont-filter-2nd-level-model-with-habtm-hasmany – dinkan 2012-08-02 16:46:52