Получить информацию о последних заказах в Magento - PullRequest
0 голосов
/ 25 декабря 2011

По умолчанию Magento получает информацию о заказе, такую ​​как доставка, адрес, но не так много о продукте. Я хочу получить самую свежую информацию о заказе, включая URL-адрес продукта, миниатюру продукта и т. Д. Я пытаюсь объединить таблицы заказов, чтобы получить информацию. Но я обнаружил, что в таблице sales_flat_order_item есть только название продукта. Итак, как я могу получить URL продукта и миниатюру?

Я написал функцию в блоке, чтобы получить некоторую информацию о заказе, от новичка до magento, не могли бы вы сказать мне, является ли это хорошим методом для получения данных из magento, если нет, то просим сообщить ваш метод.

    public function getOrderCollection() {
    $orders = Mage::getModel('sales/order')->getCollection();
    $orders->getSelect()
        ->join(
            array('addr' => Mage::getSingleton('core/resource')->getTableName('sales/order_address')),
            'main_table.entity_id = addr.parent_id',
            array('addr.*')
        )       
        ->join(
            array('itemz' => Mage::getSingleton('core/resource')->getTableName('sales/order_item')),
            'main_table.entity_id = itemz.order_id', 
            array('itemz.*')
        )
        ->join(
            array('product' => Mage::getSingleton('core/resource')->getTableName('catalog/product')),
            'itemz.product_id = product.entity_id',
            array('product.*')
        )
        ;
    $orders
        ->addAttributeToFilter('main_table.status', 'Processing')
        ->addAttributeToFilter('addr.address_type', 'shipping')
        ->addAttributeToSort('main_table.entity_id', 'asc')
        ;


    return $orders;
}

1 Ответ

0 голосов
/ 27 декабря 2011

То, что вы, вероятно, хотите сделать, это использовать $order->getAllItems() или $order->getAllVisibleItems(). Разница между ними заключается в том, что getAllItems () возвращает все элементы, включая настраиваемые / сгруппированные продукты и их дочерние элементы, тогда как getAllVisibleItems () возвращает только родительские продукты.

Оттуда вы можете приступить к сбору и использовать $item->getProduct(), или, скорее всего, вам понадобится загрузить продукт следующим образом:

Mage::getModel('catalog/product')->load($item->getProductId());

Из того, что я могу сказать, вы ищете такой код:

$items = $order->getAllItems();
foreach ($items as $item) {
  $product = Mage::getModel('catalog/product')->load($item->getProductId());
  /* Use product methods here to get required data */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...