Sunday, March 18, 2012

通过产品ID得到collection


You can do as following for filtering products id 10 and 12
$products->addAttributeToFilter('entity_id'array('in'=>array(10,12)));

当然这种方式的上面,必须用  ->addAttributeToSelect();


下面这种方式比较实用的,如果想按照名字排序,那么使用方法:setOrder("name","asc");如果想按照ids中的排列的顺序,那么实用   $collection->getSelect()->order("find_in_set(e.entity_id,'".implode(',',$ids)."')");  此为zf框架!

$idss = Mage::registry("idss");
$ids =  explode(",",$idss);

 //= array(3552,3553,3554,3555);
        $collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('entity_id',$ids);
    //    ->setOrder("name", "asc");

        $collection->getSelect()->order("find_in_set(e.entity_id,'".implode(',',$ids)."')");
       
        $this->setCollection($collection);
补充:
    Mytest_Catalog_Model_Resource_Eav_Mysql4_Product_Collection
    public function addIdFilter($productId, $exclude = false)
    第一个参数是具体的entity_id,第二个参数决定包含(in)还是排除(nin)

1 comment:

  1. 下面这种方式比较实用的,如果想按照名字排序,那么使用方法:setOrder("name","asc");如果想按照ids中的排列的顺序,那么实用 $collection->getSelect()->order("find_in_set(e.entity_id,'".implode(',',$ids)."')"); 此为zf框架!buy gold for diablo 3

    ReplyDelete