आपको अपनी इच्छित क्वेरी बनाने के लिए इनमें से अधिकांश तकनीकों को संयोजित करने में सक्षम होना चाहिए। बिक्री तालिकाओं के लिए, आप शायद उपयोग करेंगे addFieldToFilter
- लेकिन Zend_Db_Expr
संभावना है कि आपके लिए कम से कम प्रतिरोध का रास्ता:
AddAttributeToFilter:
मैजेंटो विकी के अनुसार : जब ऐसी OR
परिस्थितियां बनती हैं, जिनमें आप निम्न कार्य कर सकते हैं:
यदि कोई सरणी दी गई है, लेकिन कोई विशेषता कोड निर्दिष्ट नहीं किया गया है, तो उसे OR के समूह के रूप में व्याख्या किया जाएगा जिसे उसी तरीके से संसाधित किया जाएगा।
तो, इससे हम निम्नलिखित निर्माण कर सकते हैं:
$collection->addAttributeToFilter(
array(
array('attribute'=> 'someattribute','like' => 'value'),
array('attribute'=> 'otherattribute','like' => 'value'),
array('attribute'=> 'anotherattribute','like' => 'value'),
)
);
यह WHERE
प्रारूप का एक खंड आउटपुट करेगा :
WHERE ((someattribute LIKE 'value') OR (otherattribute LIKE 'value') OR (anotherattribute LIKE 'value'))
addFieldToFilter:
उस मामले में जहां मॉडल सीधे एक डीबी तालिका से जुड़ा हुआ है, निम्नलिखित को नाम से डेटाबेस कॉलम में सशर्त लागू करने के लिए आवश्यक है:
$collection->addFieldToFilter(
array('title', 'content'),
array(
array('like'=>'%$titlesearchtext%'),
array('like'=>'%$contentsearchtext%')
)
)
Zend_Db_Expr:
बहुत अधिक जटिल निर्माणों के लिए आप अपना स्वयं का निर्माण कर सकते हैं जहां क्लॉज का उपयोग किया जाता है Zend_Db_Expr
। उदाहरण के लिए :
$collection->getSelect()->where(new Zend_Db_Expr("(e.created_at > '2013-01-01 00:00:00' OR e.created_at <'2012-01-01 00:00:00)"));
स्रोत:
/programming/5301231/addattributetofilter-and-or-condition-in-magentos-collection
/programming/3826474/magento-addfieldtofilter-two-fields-match-as-or-not-and/7851884#7851884