2012-02-13 3 views
0

Вот мой сценарий:CakePHP Фильтрация на основе ассоциированных данных с PAGINATION

  • У меня есть две таблицы: subfirms и subfirmdetails.
  • Я пытаюсь разбивать субфирмы на страницы, но с фильтрами в зависимости от определенных значений подфирмы, таких как 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

Вы должны использовать внутренние соединения.

$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

Спасибо, работал как шарм. – jwg2s

Смежные вопросы