Magento фильтрует товары по предметам, у которых есть этот товар в сопутствующих товарах - PullRequest
1 голос
/ 28 февраля 2012

Я хочу получить коллекцию продуктов, у которых продукт x является связанным продуктом.

Итак, скажем, я начинаю с

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

И хотите добавить что-то вроде (но с некоторым обратным in вместо eq):

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

Я не могу ничего найти, но предположим, что в него будет включено некоторое описание. Я бы предпочел не загружать все продукты, а затем все связанные с каждым циклом их всех по понятным причинам.

Ответы [ 2 ]

1 голос
/ 10 марта 2015

У меня недавно была та же проблема, но я сделал небольшой модуль для этого, так что его можно использовать повторно. Но для простоты урезанную версию моего решения можно найти ниже.

// 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();

Приведенный выше код заполнит $ collection массивом идентификаторов, которым $ _productId назначен как связанный продукт.

Примечание: Это работает на CE 1.9.1.0

1 голос
/ 28 февраля 2012

Вы можете сделать

// @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);

Я проверил, что он работает без ошибок для моей БД, но у меня нет ссылок на продукты в моей базе данных (мы получаем из веб-службы), поэтомуЯ не могу быть уверен, что он возвращает ожидаемые продукты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...