Magento:如何从sales / order_item集合中获取客户组ID?

时间:2013-11-10 18:15:41

标签: magento

如何从sales / order_item集合中获取客户组ID?我意识到我可能需要遍历销售树,但不知道如何做到这一点?

提前致谢!

修改

我意识到我对这个问题很模糊。我需要做的是获得产品的总销售额,但仅限于某个customer_group_id购买的产品。我需要将orders表加入order_items表来检查customer_group_id,但它对我不起作用。这就是我所拥有的:

$collection = Mage::getModel('sales/order_item')->getCollection()
    ->addExpressionFieldToSelect('ordered','SUM({{qty_ordered}})', array('qty_ordered'=>'qty_ordered'))
    ->addAttributeToFilter('product_id', '123')
    ->addAttributeToFilter('created_at', array(
                       'from' => reverse_date($_REQUEST['startdate']),
                       'to' => reverse_date($_REQUEST['enddate']),
                     ))
    ->join(
        array('orders_table' => $collection->getTable('sales/order')),
        'orders_table.entity_id = main_table.order_id
         AND orders_table.customer_group_id = 1',
        array('customer_group_id'=>'value')
     );

我得到的错误是:

'Can't retrieve entity config: sales/sales_flat_order'

3 个答案:

答案 0 :(得分:2)

如果您拥有的集合属于Mage_Sales_Model_Resource_Order_Item_Collection,那么您可以执行以下操作。假设您的收藏集是$orderItems

$order = $orderItems->getSalesOrder();
$customerGroupId = $order->getCustomerGroupId();

答案 1 :(得分:0)

我有它的工作。我在查询的初始“构建”之后添加了连接,如下所示:

$collection = Mage::getModel('sales/order_item')->getCollection()
    ->addExpressionFieldToSelect('ordered','SUM({{qty_ordered}})' , array('qty_ordered'=>'qty_ordered'))
    ->addAttributeToFilter('main_table.product_id', $product->getId())
    ->addAttributeToFilter('main_table.created_at', array(
                       'from' => reverse_date($_REQUEST['startdate']),
                       'to' => reverse_date($_REQUEST['enddate']),
                     ));


  $collection->getSelect()->join(
        array('orders_table' => $tableName),
        'orders_table.entity_id = main_table.order_id
         AND (orders_table.customer_group_id = 1 OR orders_table.customer_group_id = 0)'
     );

我不确定为什么它会以这种方式工作而不是另一种,但是嘿嘿!

答案 2 :(得分:0)

而不是使用$collection->getTable('sales/order')

使用,'sales_flat_order'

所以你的路线就是,

array('orders_table' => 'sales_flat_order'),