Çoktan seçmeli bir özellikten sonuçlar bulabilecek bir ürün koleksiyonu oluşturuyorum.
(koleksiyona finset ekleyen ilgili kod - gerçek kimlik değerlerini görüntüleyecek şekilde ayarlanır)
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'measurement');
$value = array('finset' => array('237',
'236',
'235',
'234',
'233',));
$collection->addAttributeToFilter($attribute, $value);
Ortaya çıkan sql (görünürlük filtresi eklenmiş olarak) aşağıdaki gibidir:
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
Sorun şu ki bir sql hatası alıyorum:
"SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'FIND_IN_SET'"
ve ben (düşünüyorum) nedenini görebiliyorum: Çoklu seçim değerlerinin sadece bir seçeneği vardır, bu nedenle FINSET için uygun virgülle ayrılmış değerler yoktur
Bu hatanın neden oluştuğu konusunda doğru muyum? Bunu hesaba katmak için bu toplama nesnesini nasıl yazabilirim?
Yukarıdaki değilse, ne eksik?
Mysql tezgahında sql çalıştırmanın sonuçları, find_in_set yantümcesi eksi:
1
kopyası: magento.stackexchange.com/questions/14109/…
—
ProxiBlue