Фильтровать коллекцию продуктов по двум категориям Magento 1.7

Я хочу получить коллекцию продуктов с продуктами в категории A или категории B. Я смог успешно получить эти продукты со следующим php-кодом:

$collection = Mage::getModel('catalog/product') ->getCollection() ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left') ->addAttributeToFilter('category_id', array('in' => array('finset' => 4,19))) ->addAttributeToSelect('*'); 

Однако, если продукт находится в категории 4 и 19, тогда отображается ошибка:

 Item (Mage_Catalog_Model_Product) with the same id "173" already exist 

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

См. Также коллекцию Filter Magento, но не продукты, используя различные

Solutions Collecting From Web of "Фильтровать коллекцию продуктов по двум категориям Magento 1.7"

Хорошо, я решил это благодаря https://stackoverflow.com/a/13291759/991491

 $collection = Mage::getModel('catalog/product') ->getCollection() ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left') ->addAttributeToFilter('category_id', array('in' => array('finset' => 3,4))) ->addAttributeToSelect('*'); $collection->getSelect()->group('e.entity_id'); 

Предложение group делает трюк в преодолении дублированных идентификаторов продукта, которые возвращаются.

такое же предложение ссылок на ссылки http://www.magentocommerce.com/boards/m/viewthread/245112/

это произойдет, когда в коллекции у вас одинаковый идентификатор

поэтому я использовал ниже код в конце коллекции

$ Галерею-> getSelect () -> различны (истина);

это сделает выбор

Я получил эту ошибку и что Magento сообщил через / var / reports / xxxxxxx:

 a:5:{i:0;s:71:"Item (Mage_Catalog_Model_Product) with the same id "xxx" 

Что я сделал, так это деактивировать продукт с этим идентификатором, и он исправлен. Поэтому я удаляю этот продукт и воссоздаю его. Не идеальное решение, но работает пока. Но все еще задайтесь вопросом, в чем проблема? об этом «отличном» решении, для меня эта ошибка приходит внезапно, мы не изменили или не разработали что-то новое недавно, что может вызвать это. Кто-нибудь может подумать, почему это произошло внезапно?

Коллекция продуктов для фильтра с использованием нескольких идентификаторов категорий

 $all_categories = array('3','13','113'); $productCollection = Mage::getModel('catalog/product')->getCollection(); $productCollection->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left') ->addAttributeToSelect('*') ->addAttributeToFilter('type_id', array('eq' => 'simple')) ->addAttributeToFilter('category_id', array($all_categories)); foreach($productCollection as $product) { echo $product->getId() .$product->getName() . "<br/>"; }