それはタイプミスではありません。
複数選択属性をフィルター処理するには '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]));
}
}
フロントエンドにあるのはフィールドのセットです。各セットは特定の属性に対応し、各属性値のチェックボックスが含まれています。これらの提出に基づいて、コレクションは選択されたものを除外する必要があります。
複数選択オプションの2つを同時にフィルターにかけようとする1つの場合を除いて、すべてがうまく機能します。そのうちの1つだけを選択した場合、検索は正しく機能します。2つ以上選択すると、上記のMySQLエラーが発生します。
何か案は?それとも、このフィルターを作成するためにカスタムSQLステートメントを使用する必要がありますか?
catalog_product_index_eav_idx
テーブルを使用してフィルタリングしてみてください。