2011-04-13 15 views
10

bulmak benim durumdur ŞimdiCakePHP'de tüm koşul VE YA Aşağıda

AND ((`EventCompetitor`.`is_black` = 0) AND (`EventCompetitor`.`is_adult` = 0)) AND 

, ben bu değil İstiyorum, bunun gibi bir şey istiyorum:

((`EventCompetitor`.`is_black` = 1) AND (`EventCompetitor`.`is_adult` = 1)) OR ((`EventCompetitor`.`is_black` = 0) AND (`EventCompetitor`.`is_adult` = 0)) 

Herhangi bir fikir, nasıl başarabilirim?

Teşekkürler!

cevap

16

senin alt anahtarlarını tanımlamak zorunda sizin "VEYA" Kama dizi ikinci anahtar ef ile aynı adı vardır Birincisini fektif olarak üzerine yazmak. Anahtar çarpışmasını önlemek için bu "AND" koşullarını kendi dizilerinde saklamanız gerekir. Örn.,

örn. yerine:

'OR' => 
     array(
       'AND' => array(
           array('EventCompetitor.is_black' => 1), 
           array('EventCompetitor.is_adult' => 1) 
         ), 
       'AND' => array(
           array('EventCompetitor.is_black' => 0), 
           array('EventCompetitor.is_adult' => 0) 
         ), 
      ), 

yapın:

'OR' => 
     array(
       array('AND' => array(
           array('EventCompetitor.is_black' => 1), 
           array('EventCompetitor.is_adult' => 1) 
         )), 
       array('AND' => array(
           array('EventCompetitor.is_black' => 0), 
           array('EventCompetitor.is_adult' => 0) 
         )), 
      ), 
+1

Açıklamanız için teşekkürler, şimdi benim için çalışıyor :) –

0

Sana im emin ama onun bir cami değil ekstra dizi() orada, gerek:

'OR' => 
    array(
     array(
      'AND' => array(
       array('EventCompetitor.is_black' => 1), 
       array('EventCompetitor.is_adult' => 1) 
      ) 
     ), 
     array(
      'AND' => array(
       array('EventCompetitor.is_black' => 0), 
       array('EventCompetitor.is_adult' => 0) 
      ) 
     ) 
    ), 
3

bunu test etmedim ama aşağıdakiler gereklidir düşünüyorum:

'OR' => 
    array(
     array(
      array('EventCompetitor.is_black' => 1), 
      array('EventCompetitor.is_adult' => 1) 
     ), 
     array(
      array('EventCompetitor.is_black' => 0), 
      array('EventCompetitor.is_adult' => 0) 
     ) 
    ) 

AND koşullar arasında ima, sadece OR grupları içinde

+1

+1 gerçekleştirerek ve belirten ve belirtildi için. – khany