2012-04-25 83 views
0

我的问题扩展了以前发布的CakePHP: Limit Fields associated with a model。我有效地使用这一解决方案与此呼叫cakephp:在find('all')中筛选子表中的字段

$data = $this->SOP10100->find('all', 
     array('fields' => $this->SOP10100->defaultFields)); 

然而,这个方法返回筛选父母和子女未过滤领域限制父表返回的字段。我有131个子字段,我只需要7个。我在子表中有相同的defaultFields数组结构。如何修改此调用(或创建一个新调用),以便为同一数组中的父模型和子模型返回已过滤的字段?

下面是数组父表的结构:

public $defaultFields = array(
    'SOP10100.SOPNUMBE', 
    'SOP10100.INVODATE', 
    'SOP10100.DOCDATE', 
    'SOP10100.DOCAMNT', 
    'SOP10100.SUBTOTAL'); 

您的帮助表示赞赏。

+0

您使用'belongTo'或'hasA'定义父 - :

$this->InvoiceHeader->Behaviors->attach('Containable'); $data = $this->InvoiceHeader->find('all', array( 'fields' => $this->InvoiceHeader->defaultFields, 'contain' => array( 'InvoiceDetail' => array( 'fields' => $this->InvoiceDetail->defaultFields)) ) ); 

回报是我的阵列中的数据,就像我想儿童关系?如果是这样,你是否在过滤器中设置了连接表? – pollirrata 2012-04-25 20:57:34

回答

1

SCORE!哇,在一天内解决了两个大问题。我终于有帮助的负荷想通了许多资源:

array(
(int) 0 => array(
    'InvoiceHeader' => array(
     'SOPNUMBE' => 'SVC0202088   ', 
     'INVODATE' => '2012-04-17 00:00:00', 
     'DOCDATE' => '2012-04-17 00:00:00', 
     'DOCAMNT' => '.00000', 
     'SUBTOTAL' => '.00000' 
    ), 
    'InvoiceDetail' => array(
     (int) 0 => array(
      'ITEMNMBR' => 'SERVICE      ', 
      'QUANTITY' => '1.00000', 
      'UOFM' => 'EA  ', 
      'UNITPRCE' => '.00000', 
      'TAXAMNT' => '.00000', 
      'CONTSTARTDTE' => '2012-04-17 00:00:00', 
      'CONTENDDTE' => '2012-04-30 00:00:00', 
      'SOPNUMBE' => 'SVC0202088   ' 
     ),