का उपयोग कर मैं इस जटिल कहां Zend_Db में खंड उत्पन्न करना चाहते Zend_Db साथ खंड:परिसर जहां कई व OR ऑपरेटर
SELECT *
FROM 'products'
WHERE
status = 'active'
AND
(
attribute = 'one'
OR
attribute = 'two'
OR
[...]
)
;
मैं इस की कोशिश की है:
$select->from('product');
$select->where('status = ?', $status);
$select->where('attribute = ?', $a1);
$select->orWhere('attribute = ?', $a2);
और कहा कि उत्पादन:
SELECT `product`.*
FROM `product`
WHERE
(status = 'active')
AND
(attribute = 'one')
OR
(attribute = 'two')
;
मुझे यह काम करने का एक तरीका पता चला लेकिन मुझे लगा कि यह "या" को गठबंधन करने के लिए PHP का उपयोग करके 'धोखाधड़ी' पहले खंड और फिर Zend_Db का उपयोग करके उन्हें गठबंधन करें() खंड। PHP कोड:
$WHERE = array();
foreach($attributes as $a):
#WHERE[] = "attribute = '" . $a . "'";
endforeach;
$WHERE = implode(' OR ', $WHERE);
$select->from('product');
$select->where('status = ?', $status);
$select->where($WHERE);
जो मैंने बनाया था वह उत्पादित किया। लेकिन अगर मैं पहले PHP में संयोजन के बजाय, Zend_Db टूल का उपयोग करने के साथ उस जटिल जटिल कहां (जो वास्तव में बहुत जटिल नहीं है, केवल कुछ कोष्ठक जोड़ रहा है) प्राप्त करने का "आधिकारिक" तरीका है, तो मुझे उत्सुकता है।
चीयर्स! ,
$a1 = 'one';
$a2 = 'two';
$select->from('product');
$select->where('status = ?', $status);
$select->where("attribute = $a1 OR attribute = $a2");
तो, तुम क्या कर रहे उचित प्रतीत होता है आपको लगता है कि दिए गए:
हाँ, आपका समाधान, ZF संदर्भ मार्गदर्शिका से, आपका मूल उदाहरण है कि मैं अपने अंतिम उदाहरण के साथ कैसे आया हूं। शायद यह करने के लिए सही तरीका है। यह सिर्फ काउंटर-अंतर्ज्ञानी लगता है कि Zend_Db_Select (ZDS) आपके लिए आपके SQL उत्पन्न करने का अनुमान है, लेकिन हमें ZDS के बाहर इसका एक हिस्सा उत्पन्न करना होगा। शायद, यह ऐसा कुछ है जो एक्सटेंशन का उपयोग कर सकता है ताकि हम सभी कोड Zend_Db_Select में रख सकें। – jmbertucci
[Zend_Db_Select] (http://framework.zend.com/manual/1.12/en/zend.db.select.html) लिंक मेरे लिए काम नहीं करता है यहां दस्तावेज़ों के लिए एक अद्यतन लिंक है। –