Sto creando una raccolta di prodotti, che troverà risultati da un attributo a selezione multipla.
(codice pertinente che aggiunge il finset alla raccolta - adattato per visualizzare i valori ID reali)
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'measurement');
$value = array('finset' => array('237',
'236',
'235',
'234',
'233',));
$collection->addAttributeToFilter($attribute, $value);
Il sql risultante (con l'aggiunta del filtro di visibilità) è come tale:
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
Il problema è che ottengo un errore sql:
"SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'FIND_IN_SET'"
e io (penso) capisco perché: alcuni dei valori a selezione multipla hanno una sola opzione, quindi non ci sono valori separati da virgola per qualificarsi per FINSET
Sono corretto nel perché questo errore viene prodotto? Come posso scrivere questo oggetto di raccolta per tener conto di ciò?
Se non quanto sopra, cosa mi sto perdendo?
I risultati dell'esecuzione di sql in mysql workbench, meno la clausola find_in_set: