那不是错字。
我知道我需要使用'finset'来过滤我的多选属性;但是,我试图一次过滤多个值并得到:
Incorrect parameter count in the call to native function 'FIND_IN_SET
。
这是一些示例代码:
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]));
}
}
我在前端有一组字段,每个字段对应一个特定的属性,并包含每个属性值的复选框。根据这些提交的内容,集合应过滤掉已选择的内容。
除了我尝试同时过滤两个多选选项的单一情况外,其他所有功能都工作正常。如果我仅选择其中之一,则搜索将正常进行。如果选择两个或多个,则会出现上述MySQL错误。
有任何想法吗?还是我被迫使用自定义SQL语句来构建此过滤器?
catalog_product_index_eav_idx
表进行过滤。