Pregunta

Tengo este método en el que recupero primero un Varien_Data_Collection y luego agrego elementos uno por uno de otro Varien_Data_Collection por addItem ():

    protected function _prepareCollection(){

    $productId = $this->getRequest()->getParam('id');
    $websiteId = 0;
    if ($store = $this->getRequest()->getParam('store')) {
        $websiteId = Mage::app()->getStore($store)->getWebsiteId();

        $collection = Mage::getModel('productalert/stock')
                ->getCustomerCollection()
                ->join($productId, $websiteId); 

        foreach ($collection as $item) {
            $item->setData('is_customer', 'Sì');
        }


        $guestCollection = Mage::getModel('productsalert/gueststock')->getCollection()
                ->addFieldToFilter("product_id", $productId)
                ->addFieldToFilter("website_id", $websiteId);


        foreach ($guestCollection as $guestItem) {
            $obj = new Mage_Customer_Model_Customer();
            $obj->setData($guestItem->getData());
            $obj->setData('alert_stock_id', ($guestItem->getData('alert_stock_id')+100000000));
            $obj->setData('email', $guestItem->getData('guest_email'));
            $obj->setData('is_customer', 'No');
            $collection->addItem($obj);
        }
        $collection = $collection->setOrder('add_date','ASC');
        $this->_sortCollectionDescByDate($collection);
        $this->setCollection($collection);
    }
    else{
        $this->setCollection(new Varien_Data_Collection());
    }




    return parent::_prepareCollection();

}   

Entonces, cuando tenga la colección final, quiero establecer el orden, ya que los elementos tienen un atributo en común ('add_date'), así que configuré los métodos setOrder, pero no funciona (alguien en IRC me dijoque setOrder modifica la consulta).así que puedo hacerlo manualmente, pero me parece extraño que no haya que ordenar una colección después de agregar elementos.Eché un vistazo a la API Varien_Data_Collection pero no veo nada que pueda ayudarme.También intenté cambiar la clase de colección a Varien_Data_Collection_Db y configurar el método addOrder () pero nada ha cambiado.

¿Alguna idea?

¡gracias!

Lucas

¿Fue útil?

Solución

Puede llamar

$collection->clear();
$collection->....//here you add some logic for ordering;
$collection->load();//here collection with new filters will be loaded. 

O

Puede tener algún tipo de función de clasificación como especificado aquí en el último mensaje.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top