2010-02-26 12 views
12

मैं मुसीबत सिद्धांत के साथ एक काफी सरल क्वेरी क्राफ्टिंग हो रही है ...सिद्धांत: एकाधिक (कहां या कहां) क्वेरी?

मैं दो सरणियों ($ देशों, $ शहरों) है और मैं जाँच करने के लिए है कि क्या डेटाबेस रिकॉर्ड मूल्यों या तो किसी भी अंदर से मेल खाएंगे की जरूरत है। मैं की तरह कुछ के लिए देख रहा हूँ:

->whereIn('country', 'city', $countries, $cities) 

... 'देश' होने के साथ एक कहां $ देशों के लिए में और 'शहर' एक कहां में के लिए $ शहर जा रहा है।

मैं दो को अलग कर सकता हूं लेकिन आवश्यक क्वेरी में कई अन्य स्थितियां हैं, इसलिए यह संभव नहीं है। परिणामी एसक्यूएल मैं बाद में हूं:

SELECT ... 
WHERE ... 
AND ... 
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9)) 
AND ... 
AND ...; 

इसलिए कोई भी इसे ब्रैकेटिंग मुद्दे के रूप में ही सोच सकता है। किसी को पता है कि यह सिद्धांत DQL के साथ संभव है? मैंने प्रलेखन को देखा है लेकिन कोई दिशा नहीं मिल रही है।

धन्यवाद

उत्तर

38

इस बकवास पर प्रयोग के एक घंटे के बाद, यहाँ यह काम करने के लिए वाक्य रचना है।

$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9))); 
4

कुछ ऐसा क्यों नहीं उपयोग करें?

$countryIds=[1,2,3]; 
$cityIds=[7,8,9]; 

$q->whereIn('country',$countryIds)->andWhereIn('city',$cityIds); 

इसके अलावा, संदर्भ के लिए उन्हें एक साथ श्रृंखलाएं (अधिकांश सिद्धांत विधियां इसे वापस लौटाती हैं)।

देख http://www.symfony-project.org/doctrine/1_2/en/06-Working-With-Data

+0

ध्यान दें, यह सिद्धांत 2 के साथ संगत नहीं है! –

+0

यह प्रासंगिक है क्योंकि इस प्रश्न को 'सिद्धांत' टैग किया गया है और 'सिद्धांत 2' नहीं है – TwystO

संबंधित मुद्दे