Tôi đang xây dựng một bộ sưu tập sản phẩm, sẽ tìm thấy kết quả từ một thuộc tính multiselect.
(mã có liên quan thêm finset vào bộ sưu tập - được điều chỉnh để hiển thị giá trị id thực)
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'measurement');
$value = array('finset' => array('237',
'236',
'235',
'234',
'233',));
$collection->addAttributeToFilter($attribute, $value);
Kết quả sql (với bộ lọc độ nhớt được thêm vào) là như sau:
SELECT DISTINCT
e . *,
at_measurement.value AS measurement,
at_visibility.value AS visibility
FROM
catalog_product_entity AS e
INNER JOIN
catalog_product_entity_varchar AS at_measurement ON (at_measurement.entity_id = e.entity_id) AND (at_measurement.attribute_id = '983') AND (at_measurement.store_id = 0)
INNER JOIN
catalog_product_entity_int AS at_visibility ON (at_visibility.entity_id = e.entity_id) AND (at_visibility.attribute_id = '526') AND (at_visibility.store_id = 0)
WHERE
(e.attribute_set_id IN ('74')) AND (FIND_IN_SET('237',
'236',
'235',
'234',
'233',
at_measurement.value)) AND (at_visibility.value IN ('2' , '4'))
GROUP BY e.entity_id
Vấn đề là tôi nhận được một lỗi sql:
"SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'FIND_IN_SET'"
và tôi (nghĩ) Tôi có thể thấy tại sao: Một số giá trị đa lựa chọn chỉ có một tùy chọn, do đó không có giá trị được phân tách bằng dấu phẩy để đủ điều kiện cho FINSET
Tôi có đúng tại sao lỗi này được tạo ra không? Làm thế nào tôi có thể viết đối tượng bộ sưu tập này để giải thích cho điều này?
Nếu không phải ở trên, tôi còn thiếu gì?
Các kết quả từ việc chạy sql trong bàn làm việc mysql, trừ mệnh đề find_in_set: