Magento 1.7 - 订购商品加入可配置的产品信息

时间:2013-01-09 12:48:09

标签: magento magento-1.7

我有一个显示订单商品的网格。我想显示每个项目的产品详细信息。但有些是simple,有些是configurable

网格中的集合是sales/order_item_collection

_prepareCollection()我有这些联接:

        $collection->getSelect()->join( 
           array('orders_alias' => $resource->getTableName('sales/order'))
           , 'main_table.order_id = orders_alias.entity_id'
           , array('orders_alias.increment_id', 'order_date' => 'orders_alias.created_at')
           , null);

    $collection->getSelect()->join( 
           array('p' => $resource->getTableName('catalog/product'))
           , 'main_table.product_id = p.entity_id
           , array('product_sku' => 'p.sku')
           , null); 

对于具有可配置产品的订单商品,我会看到一个额外的行 例如如果有人买了XXL大小的衬衫,我会看到2行订单商品。

我想我只需要显示可见的产品。我该怎么做?

如果我从订单中删除并显示我可以执行此操作的项目:

    // get order items
    $items = $order->getAllVisibleItems();

但我需要检查项目是否可见。

\app\code\core\Mage\Sales\Model\Order.php我看到了:

    public function getAllVisibleItems()
{
    $items = array();
    foreach ($this->getItemsCollection() as $item) {
        if (!$item->isDeleted() && !$item->getParentItemId()) {
            $items[] =  $item;
        }
    }
    return $items;
}

所以如果我添加这个过滤器:

$collection->addAttributeToFilter('parent_item_id', array('is' => new Zend_Db_Expr('null')));

它似乎显示正确的订单商品。这是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

目前我使用此解决方案:

$collection->addAttributeToFilter('parent_item_id', array('is' => new Zend_Db_Expr('null')));

答案 1 :(得分:0)

在哪里添加这一行?

$ collection-> addAttributeToFilter('parent_item_id',array('is'=> new Zend_Db_Expr('null')));

我看到两个项目一个0和另一个项目实际产品

http://i.stack.imgur.com/fx1bd.jpg