2012-04-25 73 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   ' 
     ),