Magento按产品中的相关产品筛选产品

时间:2012-02-28 16:52:04

标签: magento

我希望获得一系列产品x作为相关产品的产品。

所以,说我从

开始
$_productCollection = $product->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status',1)
->addStoreFilter()
->distinct(true);

并希望添加类似(但有一些反向in而不是eq):

$_productCollection->addAttributeToFilter('related_ids',array('eq' => $idofproductx));

我找不到任何东西,但假设它会包含一些描述的连接。我宁愿避免加载所有产品,然后所有产品都通过它们全部相关,原因显而易见。

2 个答案:

答案 0 :(得分:1)

你可以做到

// @var $products array
$_productCollection->getSelect()->join(array('links' => 'catalog_product_link'), 'e.entity_id = links.product_id');

$_productCollection->getSelect()->where('links.linked_product_id IN (?)', $products);

我测试它运行时没有错误对我的数据库,但我的数据库中没有产品链接(我们从Web服务获取),所以我不能确定它返回预期的产品。

答案 1 :(得分:1)

我最近遇到了同样的问题,但我最终为此制作了一个小模块,以便它可以重复使用。 但为了简单起见,我的解决方案的剥离版本可以在下面找到。

// load by a product Id
$_product = Mage::getModel('catalog/product')->load($_productId);

$_linkInstance = $_product->getLinkInstance();
$collection = $_linkInstance->getLinkCollection();

// get products which have $_productId as a link
$collection->addFieldToFilter('linked_product_id',  array('eq' => $_product->getId()));

// 1 = related products
$collection->addLinkTypeIdFilter(1);
$collection->joinAttributes();

上面的代码将使用一系列ID填充$ collection,这些ID已将$ _productId指定为相关产品。

注意:这适用于CE 1.9.1.0