添加属性以过滤AND条件magento

时间:2014-01-15 05:14:19

标签: magento

我试图按名称过滤掉收藏品,可以从a,b,c和d字母开始。

我试过以下代码

  

1)addFieldToFilter('m_name',array('like'=>'a%'),'m_name',array('like'=>'b%'),'m_name',array('比如'=>'c%'))

     

2)addFieldToFilter(array(array('m_name','like'=>'a%'),array('m_name','like'=>'b%'),array('m_name' ,'喜欢'=>'c%'),))

但是这两个都显示了仅以字母“a”开头的名字集合(不是b,c和d)。请帮助我获得正确的收藏。

我也试过这段代码 $ collection = Mage :: getModel('manufacturer / manufacturers') - > getCollection()                                  - > addStoreFilter(法师::应用程序() - > getStore(真) - >的getId())                                  - > addFieldToFilter('m_name',array(array('like'=>'a'。'%')),array('like'=>'b'。'%'),array('like '=>' C% '))”。'    - > addFieldToSelect( '*') - >负载();

但它仍然显示以字母'a'开头的名字集合

2 个答案:

答案 0 :(得分:0)

你好检查下面的代码可能会对你有所帮助

$collection = Mage::getModel('catalog/product')->getCollection()
          ->addAttributeToSort('name', 'asc')
          ->addFieldToFilter('name',array(array('like'=>'a%'), array('like'=>'b%'), array('like'=>'c%'), array('like'=>'d%')))
              ->addAttributeToSelect('*');
foreach ($collection as $product) {
      echo $product->getName() . "<br />";
}

答案 1 :(得分:0)

您不是在搜索AND,而是在搜索OR

如果您AND LIKE a%LIKE b%,您将始终获得空结果。这是因为相同的属性值只能以a OR b开头,但绝不能以a AND b开头。

要为特定属性定义OR过滤器,您可以使用单个addFieldToFilter()调用并将数组数组传递给它:

$collection = Mage::getModel('catalog/product')->getCollection()
    ->addFieldToFilter(
        'm_name',
        array(
            array(
                'like' => 'a%'
            ),
            array(
                'like' => 'b%'
            )
        )
    );