我有產品標籤的數組,我想找到的這些標籤分配給所有的產品(即返回有標籤的所有產品「大」和「紅」)。我目前正在使用以下內容,但不能按預期工作。如何通過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