我试图按名称过滤掉收藏品,可以从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'开头的名字集合
答案 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%'
)
)
);