代码之家  ›  专栏  ›  技术社区  ›  Rakward

Magento:addAttributeToFilter但忽略没有此属性的产品?

  •  4
  • Rakward  · 技术社区  · 15 年前

    假设我有产品类型A和B。现在我只想显示一个where color=blue/red。

    $collection = Mage::getResourceModel('catalog/product_collection')
        ->setStoreId($this->getStoreId())
        ->addCategoryFilter($this)
        ->addAttributeToFilter(array(
              array('attribute' => 'color', 'in' => array(4, 6)),
        )
        );
    

    这样做的技巧,但现在因为产品类型B没有分配给颜色的值(因为这个属性没有指定给它)没有出现这种类型的产品。

    我在论坛上找到了这个代码 http://www.magentocommerce.com/boards/viewthread/178309 ,但不起作用:

    array('attribute' => 'color', 'is' => new Zend_Db_Expr('null'))
    

    也没有:

    array('attribute' => 'color', 'null' => true),
    

    这实际上显示了分配了属性但没有声明值的产品。。。

    我还尝试添加:

    array('attribute' => 'price', 'gteq' => 0), 
    

    2 回复  |  直到 15 年前
        1
  •  8
  •   Furqan Safdar    13 年前

    也许太迟了,但这对我来说很有用:

    $collection = Mage::getResourceModel('catalog/product_collection')
        ->setStoreId($this->getStoreId())
        ->addCategoryFilter($this)
        ->addAttributeToFilter(
            array(
                array('attribute' => 'color', 'null' => true),
                array('attribute' => 'color', 'in' => array(4, 6)),
            ),
            '',
            'left'
    );
    
        2
  •  0
  •   Joe Mastey    15 年前

    $collection = Mage::getResourceModel('catalog/product_collection')
        ->setStoreId($this->getStoreId())
        ->addCategoryFilter($this)
        ->addAttributeToFilter(array(array('attribute' => 'color', 'in' => array(4, 6)),'left')
    );
    
    推荐文章