Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按自定义多重选择属性筛选Magento产品集合_Php_Magento - Fatal编程技术网

Php 按自定义多重选择属性筛选Magento产品集合

Php 按自定义多重选择属性筛选Magento产品集合,php,magento,Php,Magento,我有一个几乎完整的解决方案,可以按区域选择性地显示Magento产品 区域为: 英国 欧洲 美洲 中东 世界其他地区 所有客户都被分配了一个区域,我通过变量$customerRegion提供了该区域 所有my Magento产品都有一个自定义属性“product_region”,该属性具有可供多个选择的区域选项 list.phtml应仅提供与客户所在地区相匹配的产品。我有一个部分有效的解决方案: $_productCollection = Mage::getResourceModel('cata

我有一个几乎完整的解决方案,可以按区域选择性地显示Magento产品

区域为:
英国
欧洲
美洲
中东
世界其他地区

所有客户都被分配了一个区域,我通过变量$customerRegion提供了该区域

所有my Magento产品都有一个自定义属性“product_region”,该属性具有可供多个选择的区域选项

list.phtml应仅提供与客户所在地区相匹配的产品。我有一个部分有效的解决方案:

$_productCollection = Mage::getResourceModel('catalog/product_collection')
    ->addCategoryFilter(Mage::getSingleton('catalog/layer')->getCurrentCategory())
    ->addAttributeToFilter('product_region',
        array('eq' => Mage::getResourceModel('catalog/product')
            ->getAttribute('product_region')
            ->getSource()
            ->getOptionId($customerRegion)
        )
    )
    ->addAttributeToSelect('*');
如果客户所在地区为英国,而产品所在地区为英国,则过滤器将按预期工作。
如果客户所在地区为英国,而产品所在地区为英国和欧洲,则过滤器无法按预期工作(未给出结果)

如何调整过滤器以获得所需的性能

我试过用“in”和“like”代替“eq”,但没有成功

多谢各位

另外,查看相同问题的一个更简单的方法是查看以下代码:

->addFieldToFilter(array(
    array('attribute'=>'product_region','eq'=>'49')
))

使用
finset
代替
eq
(多个选择值以CSV格式存储)

使用
finset
代替
eq
(多个选择值以CSV格式存储)

谢谢finset’是解决方案。从那以后,我在上查找了所有的过滤条件代码,如果像我一样,您以前没有看到过,finset的意思是FIND_IN_SET()谢谢finset’是解决方案。从那以后,我在查找了所有的过滤条件代码,如果像我一样,您以前没有看到过,finset意味着FIND_IN_SET()