2011-04-13 13 views
10
नीचे

लगता है मेरी हालत हैCakePHP सभी की हालत और या

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

अब, कि मैं क्या नहीं है चाहते हैं, मुझे यह कुछ चाहिए:

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

कोई विचार, मैं इसे कैसे प्राप्त कर सकता हूं?

धन्यवाद!

उत्तर

16

अपने उपकुँजियाँ में परिभाषित करने के लिए अपने "या" बंद सरणी, एक ही नाम हैं दूसरी चाबी एफई के साथ पहले से विवादास्पद ओवरराइटिंग। कुंजी टकराव को रोकने के लिए, आपको उन "और" स्थितियों को अपने स्वयं के सरणी में समाहित करने की आवश्यकता है।

उदाहरण के लिए। के बजाय:

'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) 
         ), 
      ), 

कार्य करें:

'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

आपकी व्याख्या के लिए धन्यवाद, यह अब मेरे लिए काम करता है :) –

0

मैं तुम्हें एक अतिरिक्त सरणी() वहाँ में, im यकीन नहीं है, लेकिन इसके लायक एक कोशिश की जरूरत है:

'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

मैं इसे परीक्षण नहीं किया है, लेकिन मैं आप निम्नलिखित की जरूरत है:

'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 की स्थिति के बीच निहित है, आप केवल OR समूहों

+1

+1 को साकार करने और उस बताते हुए और निहित है के लिए। – khany