Itu bukan kesalahan ketik.
Saya sadar bahwa saya perlu menggunakan 'finset' untuk memfilter atribut multi-pilih saya; namun, saya mencoba memfilter beberapa nilai sekaligus dan mendapatkan:
Incorrect parameter count in the call to native function 'FIND_IN_SET
.
Berikut beberapa contoh kode:
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]));
}
}
Apa yang saya miliki di frontend adalah seperangkat bidang, masing-masing set sesuai dengan atribut tertentu dan berisi kotak centang untuk setiap nilai atribut. Berdasarkan kiriman ini, koleksi harus menyaring apa yang telah dipilih.
Semuanya berfungsi dengan baik kecuali untuk satu kotak di mana saya mencoba memfilter dua opsi multi-pilih secara bersamaan. Jika saya hanya memilih salah satunya, pencarian berfungsi dengan baik. Jika saya memilih dua atau lebih, saya mendapatkan kesalahan MySQL yang disebutkan di atas.
Ada ide? Atau apakah saya dipaksa untuk menggunakan pernyataan SQL khusus untuk membangun filter ini?
catalog_product_index_eav_idx
tabel.