Đó không phải là một lỗi đánh máy.
Tôi biết rằng tôi cần sử dụng 'finset' để lọc các thuộc tính đa lựa chọn của mình; tuy nhiên, tôi đang cố gắng lọc nhiều giá trị cùng một lúc và nhận được:
Incorrect parameter count in the call to native function 'FIND_IN_SET
.
Đây là một số mã mẫu:
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]));
}
}
Những gì tôi có trên frontend là một tập hợp các trường, mỗi bộ tương ứng với một thuộc tính cụ thể và chứa các hộp kiểm cho mỗi giá trị thuộc tính. Dựa trên những bài nộp này, bộ sưu tập sẽ lọc ra những gì đã được chọn.
Tất cả mọi thứ hoạt động tuyệt vời ngoại trừ trường hợp duy nhất mà tôi cố gắng lọc hai trong số các tùy chọn đa lựa chọn cùng một lúc. Nếu tôi chỉ chọn một trong số họ, tìm kiếm hoạt động đúng. Nếu tôi chọn hai hoặc nhiều hơn, tôi nhận được lỗi MySQL được đề cập ở trên.
Có ý kiến gì không? Hay tôi buộc phải sử dụng các câu lệnh SQL tùy chỉnh để xây dựng bộ lọc này?
catalog_product_index_eav_idx
bảng.