Das ist kein Tippfehler.
Mir ist bewusst, dass ich 'finset' verwenden muss, um meine Mehrfachauswahlattribute zu filtern. Ich versuche jedoch, mehrere Werte gleichzeitig zu filtern und Folgendes zu erhalten:
Incorrect parameter count in the call to native function 'FIND_IN_SET
.
Hier ist ein Beispielcode:
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]));
}
}
Was ich im Frontend habe, ist eine Reihe von Feldern, jede Menge entspricht einem bestimmten Attribut und enthält Kontrollkästchen für jeden Attributwert. Basierend auf diesen Einsendungen sollte die Sammlung herausfiltern, was ausgewählt wurde.
Alles funktioniert hervorragend, bis auf den Einzelfall, in dem ich versuche, zwei der Mehrfachauswahloptionen gleichzeitig zu filtern. Wenn ich nur einen davon auswähle, funktioniert die Suche ordnungsgemäß. Wenn ich zwei oder mehr auswähle, wird der oben erwähnte MySQL-Fehler angezeigt.
Irgendwelche Ideen? Oder bin ich gezwungen, benutzerdefinierte SQL-Anweisungen zu verwenden, um diesen Filter zu erstellen?
catalog_product_index_eav_idx
Tabelle zu filtern .