Non è un refuso.
Sono consapevole che devo usare 'finset' per filtrare i miei attributi multi-selezione; tuttavia, sto cercando di filtrare più valori contemporaneamente e ottengo:
Incorrect parameter count in the call to native function 'FIND_IN_SET
.
Ecco un po 'di codice di esempio:
foreach ($options as $option) {
// $option[0] contains an attribute ID as a string
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($option[0]);
if ($attribute->getFrontendInput() == 'multiselect') {
$collection->addAttributeToFilter($attribute->getAttributeCode(), array('finset' => $option[1]));
} else {
$collection->addAttributeToFilter($attribute->getAttributeCode(), array('in' => $option[1]));
}
}
Quello che ho sul frontend è un insieme di campi, ogni set corrisponde a un attributo specifico e contiene caselle di controllo per ciascun valore di attributo. Sulla base di questi invii, la raccolta dovrebbe filtrare ciò che è stato selezionato.
Tutto funziona alla grande tranne il caso singolo in cui provo a filtrare due delle opzioni a selezione multipla contemporaneamente. Se scelgo solo uno di essi, la ricerca funziona correttamente. Se scelgo due o più, ottengo l'errore MySQL sopra menzionato.
Qualche idea? O sono costretto a utilizzare istruzioni SQL personalizzate per creare questo filtro?
catalog_product_index_eav_idx
tabella.