如何从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'
答案 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'),