0

这是我的场景:

  • 我有两个表:subfirms 和 subfirmdetails。
  • 我正在尝试对子公司进行分页,但使用取决于某些 subfirmdetail 值的过滤器,例如 AUM(公司的总资金)。

这是我的分页代码:

$this->paginate['Subfirm'] = array(
            'contain' => array(
                'Firm' => array(
                    'Firmtype',
                    'conditions' => $firmtype,
                    'Job' => array(
                        'Person'
                    ),
                    'Attachment' => array(
                        'conditions' => array(
                            'Attachment.attachmentgroup_id' => 7
                        ),
                    ),
                ),
                'Subfirmdetail' => array(
                    'Subfirmdetailtype' => array(
                        'Subfirmdetailoption',
                    ),
                ),
                'Substrategy'
            ),
            'order' => array(
                $order,
            ),
            'conditions' => array(
                'Subfirmdetail.value = 40',
            ),
        );

        return $this->paginate('Subfirm');

假设我希望 Subfirmdetail.value 为 40,否则不显示公司。这是我试图基于(甚至更深......)过滤的场景类型。被卡住了一段时间,所以任何帮助将不胜感激!

4

2 回答 2

2

您需要使用内部联接。

 $joins = array(
   array(
       'table' => 'subfirmdetail',
       'alias' => 'Subfirmdetail',
       'type' => 'inner',
       'conditions' => array( 'Subfirmdetail.value = 40', 'Subfirmdetail.subfirm_id = Subfirm.id' )
       ),
   array(
       'table' => 'subfirmdetailtype',
       'alias' => 'Subfirmdetailtype',
       'type' => 'inner',
       'conditions' => array( 'Subfirmdetailtype.subfirmdetail_id = Subfirmdetail.id' )
       ),
   array(
       'table' => 'subfirmdetailoption',
       'alias' => 'Subfirmdetailoption',
       'type' => 'inner',
       'conditions' => array( 'Subfirmdetailoption.subfirmdetailtype_id = Subfirmdetailtype.id' )
       )
   );




  $this->paginate['Subfirm'] = array(
        'fields' => array(
            'Subfirmdetail.*', 'Subfirmdetailtype.*', 'Subfirmdetailoption.*'
            ),
        'joins' => $joins,
        'contain' => array(
            'Firm' => array(
                'Firmtype',
                'conditions' => $firmtype,
                'Job' => array(
                    'Person'
                ),
                'Attachment' => array(
                    'conditions' => array(
                        'Attachment.attachmentgroup_id' => 7
                    ),
                ),
            ),
            'Substrategy'
        ),
        'order' => array(
            $order
        )
    );

    return $this->paginate('Subfirm');
于 2012-02-13T21:45:48.700 回答
0

您可能希望为此使用 Linkable Bheavior:https ://github.com/Terr/linkable

于 2012-02-13T21:20:17.350 回答