我有产品标签的数组,我想找到的这些标签分配给所有的产品(即返回有标签的所有产品“大”和“红”)。我目前正在使用以下内容,但不能按预期工作。如何通过Magento中的多个标签过滤productCollection?
$this->_productCollection = Mage::getResourceModel('tag/product_collection')
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addStoreFilter(Mage::app()->getStore()->getId())
->addMinimalPrice()
->addUrlRewrite()
->setActiveFilter();
foreach ($tags as $tagName) {
$tagId = Mage::getModel('tag/tag')->loadByName($tagName)->getId();
$this->_productCollection->addTagFilter($tagId);
}
看起来addTagFilter()
只适用于一次,而不适用于多个标签。我也曾尝试
$this->_productCollection->getSelect()->Where('relation.tag_id=?', $tagId);
但同样,添加多个Where(relation.tag_id=?, $tagId)
不会出现工作。
这工作,但不正是我需要的。例如,如果我想获得分配了“红色”和“大”标签的产品,我可能会得到一个只有“红色”标签的产品,但不是“大”。我只想要兼得的产品。 – 2013-02-17 22:21:20
是的,这是一个'OR'请求,为了让它使用'AND',你需要一些更复杂的东西,我会调查 – dagfr 2013-02-18 07:47:25
你可以尝试使用第一个标签获得所有产品,然后使用其他产品一个(与您尝试的第一个请求),然后比较集合以获得两个集合中的产品 – dagfr 2013-02-18 07:48:51