у меня есть этот метод, с помощью которого я сначала извлекаю Varien_Data_Collection, а затем добавляю элементы один за другим из другого Varien_Data_Collection с помощью 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();
}
Итак, когда у меня есть окончательная коллекция, я хочу установить порядок, поскольку элементы в ней имеют один общий атрибут («add_date»), поэтому я установил метод setOrder, но он не работает (кто-то в IRC сказал мне, что setOrder изменяет запрос). так что я могу сделать это вручную, но мне кажется странным, что после добавления предметов нельзя заказать коллекцию. я просмотрел API Varien_Data_Collection, но не вижу ничего, что могло бы мне помочь. Я также пытался изменить класс коллекции на Varien_Data_Collection_Db и установить метод addOrder(), но ничего не изменилось.
любая идея?
Благодарность!
Люк