【问题标题】:Magento addAttributeToFilterMagento addAttributeToFilter
【发布时间】:2013-06-28 01:51:56
【问题描述】:

我正在使用产品属性availablepostalcodes。这是一个多选,每个产品有 3 个选项: 1234 2345 第3456章

现在在我 $_POST['postalcode'] 的类别页面上的帖子(表单)之后,它包含 2345。但是当我这样做时,什么都不会过滤:

$_productCollection=$this->getLoadedProductCollection();
$_productCollection->addAttributeToFilter("availablepostalcodes", array("finset"=>"5021"));


echo $_productCollection->load()->count(); 

回显仍然显示 5,但它应该是 1,因为一种产品具有该可用的邮政编码。

这是产品列表视图/catalog/product/list.phtml

我错过了什么或没有看到什么?

编辑:

$_productCollection = Mage::getModel('catalog/product')
                              ->getCollection()
                              ->addAttributeToSelect('availablepostalcodes')
                              ->addAttributeToFilter('entity_id', array('in' => $_productCollection->getAllIds()));  

然后我又得到了所有的产品。

但是当我做$_productCollection->addAttributeToFilter("availablepostalcodes", array("in" => array(5021'))); 时它仍然不起作用

【问题讨论】:

  • 嘿,你可以像这样打印这个结果 echo $_productCollection->addAttributeToFilter("availablepostalcodes", array("finset"=>"5021"))->__toString(); .结果可以帮助你。
  • 致命错误:调用 /home/drnjyser/domains/happentest.nl/public_html/app/design/frontend/default/vanhappen/template/catalog/product 中的未定义方法 Mage_Catalog_Model_Resource_Product_Collection::__toString() /list.phtml 第 42 行
  • 方法getLoadedProductCollection()已经从数据库中加载了产品,所以加载后的任何addAttributeToFilter()都不会也不会对结果产生任何影响。
  • 也许集合 clear 方法可以取消设置加载的标志,因此可以应用进一步的过滤。
  • 我对代码进行了编辑。

标签: php magento attributes


【解决方案1】:

您有一个多选,因此您需要过滤多选选项 id 而不是选项值!

【讨论】:

    【解决方案2】:

    尝试使用而不是 finset

    $_productCollection->addAttributeToFilter("availablepostalcodes", array("in"=>"5021"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多