首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakephp:在find中过滤子表中的字段(‘all’)

cakephp:在find中过滤子表中的字段(‘all’)
EN

Stack Overflow用户
提问于 2012-04-26 04:33:10
回答 1查看 1.3K关注 0票数 0

我的问题延伸了之前在CakePHP: Limit Fields associated with a model上发布的一个问题。我有效地使用了这个解决方案,通过这个调用限制了父表的返回字段

代码语言:javascript
复制
$data = $this->SOP10100->find('all', 
        array('fields' => $this->SOP10100->defaultFields));

但是,此方法返回已筛选的父字段和未筛选的子字段。我有131个子字段,我只需要其中的7个。我在子表中有相同的defaultFields数组结构。如何修改此调用(或创建一个新调用),以返回同一数组中父模型和子模型的已过滤字段?

下面是父表的数组结构:

代码语言:javascript
复制
    public $defaultFields = array(
    'SOP10100.SOPNUMBE',
    'SOP10100.INVODATE',
    'SOP10100.DOCDATE',
    'SOP10100.DOCAMNT',
    'SOP10100.SUBTOTAL');

非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-26 06:36:27

得分!哇,一天解决了两个大问题。在许多资源的帮助下,我终于找到了答案:

代码语言:javascript
复制
    $this->InvoiceHeader->Behaviors->attach('Containable');
    $data = $this->InvoiceHeader->find('all', array(
        'fields' => $this->InvoiceHeader->defaultFields,
        'contain' => array(
            'InvoiceDetail' => array(
               'fields' => $this->InvoiceDetail->defaultFields))
            )
    );

就像我想要的那样返回数组数据:

代码语言:javascript
复制
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           '
        ),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10323310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档