Фильтрация CakePHP на основе связанных данных с разбиением на страницы - PullRequest
0 голосов
/ 13 февраля 2012

Вот мой сценарий:

  • У меня есть две таблицы: подфирмы и подфирмы.
  • Я пытаюсь разбить на подфирмы страницы, но с фильтрами, зависящими от определенных значений подфирм, таких как 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, иначе не показывайте фирму. Это тип сценария, который я пытаюсь отфильтровать на основе (или даже глубже ...). Застрял на некоторое время, поэтому любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Вам необходимо использовать ВНУТРЕННИЕ объединения.

 $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');
0 голосов
/ 14 февраля 2012

Вы можете использовать Linkable Bheavior для этого: https://github.com/Terr/linkable

...