2013-08-14 1 views
0

Я прочитал в документации CakePHP 1.3, что параметр conditions для find() эквивалентен предложению SQL WHERE. Я пытаюсь написать что-то вроде этого в CakePHP:Как написать условие CakePHP find() со смешанными операторами AND OR?

select count(*) from claim 
where ((claim_id = X and company_id = W) or (claimant_firstName = Y and claimant_lastName = Z)) 

Однако, я запутался о том, как структурировать параметр conditions.

Это как

find('count', array(
      'conditions' => array(
           Claim.company_id => $companyId, 
           Claim.id' => $claimNumber, 
          'or' => array(
            'Claimant.first_name' => $claimantFirstName, 
            'Claimant.last_name' => $claimantLastName, 
            ) 
          ) 
      ) 
    ); 

или

 find('count', array(
      'conditions' => array(
          'or' => array(
             Claim.company_id => $companyId, 
             Claim.id' => $claimNumber 
            ) 
          'or' => array(
            'Claimant.first_name' => $claimantFirstName, 
            'Claimant.last_name' => $claimantLastName, 
            ) 
          ) 
      ) 

или что-то совсем другое?

ответ

1

Попробуйте это:

$conditions = array(
        'or' => array ( 
         array('and' => array('Claim.company_id' => $companyId, 'Claim.id' => $claimNumber)), 
         array('and' => array('Claimant.first_name' => $claimantFirstName, 'Claimant.last_name' => $claimantLastName)) 
        ) 
       ); 
    $this->ModelName->find('count', array('conditions' => $conditions)); 
+0

Спасибо! Это похоже на то, что я хочу. – Stephen

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

  • Нет связанных вопросов^_^