2015-11-27 2 views
0

Я пытаюсь разобраться товаров в корзине на categroy_id:Magento корзина сортировать по CATEGORY_ID

$cartItems = Mage::getModel("checkout/cart")->getItems() 
->addFieldToSelect('name') 
->addFieldToSelect('category_id') 
->addAttributeToSort('category_id', 'ASC'); 

echo $cartItems->getSelect(); //debug info 


foreach($cartItems as $item) { 
     echo $this->getItemHtml($item); 
} 

Magento жалобы, что метод addAttributeToSort не существует, взглянули и, конечно, она не определена.

Каков правильный способ выполнения этого запроса?

В противном случае,

ответ

0

вы можете попробовать следующий код:

$collection = Mage::getModel('checkout/cart')->getItems() 
    ->addFieldToSelect('name') 
    ->addFieldToSelect('category_id') 
    ->addOrder('category_id', 'asc'); 

addAttributeToSort() делает работу на некоторых коллекциях, но не контроль/корзина Модель.

Надеюсь, это поможет!

+0

Спасибо, Грег, к сожалению, он не сработал. – fran35

+0

справа, addOrder работает, но он не может получить доступ к category_id. В моем коде category_id хранится в глубине внутри items-products-data. Свернув вниз, вы можете найти идентификатор внутри переменной $ collection из кода, который я опубликовал: $ collection => [_items] => [287] => [_data] => [product] => [_data] => [category_ids ] [0] => [3] –

0

Когда вы запустите Mage::getModel("checkout/cart")->getItems(), вы получите коллекцию цитат, а не продуктов. Таким образом, в таблице sales_flat_quote_item нет категории category_id, к которой вы можете получить доступ.

Если вы хотите получить доступ к продукту, вы должны закорачивать свою коллекцию элементов котировки и запускать ->getProduct() по каждому элементу. Затем вы можете вызвать функции на продукте, например ->getCategoryIds(), чтобы получить список идентификаторов категорий, у которых есть назначенный ему продукт.

+0

Спасибо Manne, что объясняет недостающую категорию_ид. Прямо сейчас, после получения идентификаторов, я храню их в aray, который на самом деле упорядочен так, как они мне нужны. Вы случайно не знаете, можно ли передать их функции рендеринга? – fran35

Смежные вопросы