मैं एक उत्पाद संग्रह का निर्माण कर रहा हूं, जो एक गुणन विशेषता से परिणाम प्राप्त करेगा।
(प्रासंगिक कोड जो संग्रह में फ़ाइनसेट जोड़ता है - वास्तविक आईडी मान प्रदर्शित करने के लिए समायोजित)
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'measurement');
$value = array('finset' => array('237',
'236',
'235',
'234',
'233',));
$collection->addAttributeToFilter($attribute, $value);
परिणामी sql (चिपचिपापन फिल्टर के साथ जोड़ा गया) इस प्रकार है:
SELECT DISTINCT
e . *,
at_measurement.value AS measurement,
at_visibility.value AS visibility
FROM
catalog_product_entity AS e
INNER JOIN
catalog_product_entity_varchar AS at_measurement ON (at_measurement.entity_id = e.entity_id) AND (at_measurement.attribute_id = '983') AND (at_measurement.store_id = 0)
INNER JOIN
catalog_product_entity_int AS at_visibility ON (at_visibility.entity_id = e.entity_id) AND (at_visibility.attribute_id = '526') AND (at_visibility.store_id = 0)
WHERE
(e.attribute_set_id IN ('74')) AND (FIND_IN_SET('237',
'236',
'235',
'234',
'233',
at_measurement.value)) AND (at_visibility.value IN ('2' , '4'))
GROUP BY e.entity_id
मुद्दा यह है कि मुझे एक sql त्रुटि मिलती है:
"SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'FIND_IN_SET'"
और (मुझे लगता है) मैं देख सकता हूं कि क्यों: कुछ बहु-मूल्य मूल्यों में केवल एक ही विकल्प है, इस प्रकार फिन्स के लिए अर्हता प्राप्त करने के लिए कोई अल्पविराम से अलग किए गए मान नहीं हैं।
क्या मैं सही हूं कि यह त्रुटि क्यों उत्पन्न हुई? मैं इस संग्रह की वस्तु को इसके लिए कैसे लिख सकता हूं?
यदि उपरोक्त नहीं है, तो मुझे क्या याद आ रहा है?
Mysql कार्यक्षेत्र में sql चलाने से परिणाम, find_in_set क्लाज को घटाता है: