0

私の質問は、以前に投稿されたCakePHP: Limit Fields associated with a model を拡張したものです。このソリューションを効果的に使用して、この呼び出しで親テーブルの返されるフィールドを制限しました

$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');

あなたの助けに感謝します。

4

1 に答える 1

1

スコア!うわー、1日で2つの大きな問題を解決しました。私は最終的に多くのリソースからの助けを借りてそれを理解しました:

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

私が望むように配列データを返します:

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           '
        ),
于 2012-04-25T22:36:27.283 に答える