Ce n'est pas une faute de frappe.
Je suis conscient que je dois utiliser «finset» pour filtrer mes attributs à sélection multiple; cependant, j'essaie de filtrer plusieurs valeurs à la fois et d'obtenir:
Incorrect parameter count in the call to native function 'FIND_IN_SET
.
Voici un exemple de code:
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]));
}
}
Ce que j'ai sur le frontend est un ensemble de champs, chaque ensemble correspond à un attribut spécifique et contient des cases à cocher pour chaque valeur d'attribut. Sur la base de ces soumissions, la collection devrait filtrer ce qui a été sélectionné.
Tout fonctionne très bien, sauf pour le cas unique où j'essaie de filtrer deux des options de sélection multiple en même temps. Si je n'en choisis qu'un, la recherche fonctionne correctement. Si j'en choisis deux ou plus, j'obtiens l'erreur MySQL mentionnée ci-dessus.
Des idées? Ou suis-je obligé d'utiliser des instructions SQL personnalisées pour créer ce filtre?
catalog_product_index_eav_idx
tableau.