过滤Magento 1.7两类产品

Pat*_*nks 6 php collections magento 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('*');
Run Code Online (Sandbox Code Playgroud)

但是,如果产品同时属于类别4和19,则会显示错误:

Item (Mage_Catalog_Model_Product) with the same id "173" already exist
Run Code Online (Sandbox Code Playgroud)

这是因为集合中有一个重复的行.我正在努力寻找合适的代码来过滤掉集合中的任何重复行.解决方案必须是对值进行分组,或使用不同的,但我不知道如何前进.

另请参阅过滤Magento集合,但不使用distinct

Pat*_*nks 14

好的,我已经通过/sf/answers/930423161/解决了这个问题

$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');
Run Code Online (Sandbox Code Playgroud)

group子句可以克服返回的重复产品ID.

  • 这固定为我`$ collection-> distinct(true);` (2认同)