假设我有一个可以在三个不同类别中找到的产品,例如。 ID 104,115和126。
现在我想获得一个由产品组成的产品系列,这些产品也应该在所有这三个类别中找到。 这意味着具有cat id 104和115的产品不应该在集合中,因为缺少126。
我该怎么做? : - )
回复Ape的回答:
试过你的方法。我的代码的第一部分如下:
$_year = $_product->getBbYear();
$_yearInterval = $this->getYearInterval();
$_minYear = $_year - $_yearInterval;
$_maxYear = $_year + $_yearInterval;
$_minPopularityScore = $this->getMinPopularityScore();
$categories = $_product->getCategoryIds();
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect( Mage::getSingleton('catalog/config')->getProductAttributes() );
// EXCLUDE PRODUCT FROM COLLECTION
$collection->addAttributeToFilter( 'entity_id', array( 'nin' => $_product->getId() ) );
// BUILD PRIMARY COLLECTION
if ( !$_fallback ) {
foreach ($categories as $catid) {
$collection->addAttributeToFilter('category_id', array('finset' => $catid));
}
// FILTER COLLECTION BASED ON RELEASE YEAR
$collection->addAttributeToFilter('bb_year', array( 'gt' => $_minYear ));
$collection->addAttributeToFilter('bb_year', array( 'lt' => $_maxYear ));
// FILTER COLLECTION BASED ON POPULARITY SCORE
$collection->addAttributeToFilter('bb_popularity_score', array('gt' => $_minPopularityScore) );
// BUILD SECONDARY COLLECTION ON FALLBACK
}
但是,一旦我添加循环并在category_id上添加了多个过滤器,页面就不会呈现。但是,我没有任何例外情况,系统日志也没有帮助...
答案 0 :(得分:0)
您可以迭代产品的类别ID并为每个类别添加过滤器:
foreach ($product->getCategoryIds() as $id) {
$collection->addAttributeToFilter('category_id', array('finset' => $id));
}
多次致电addAttributeToFilter()
,即可创建AND
条件