【问题标题】:Magento: How to get customer group ID from sales/order_item collection?Magento:如何从 sales/order_item 集合中获取客户组 ID?
【发布时间】:2013-11-10 18:15:41
【问题描述】:

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

提前致谢!

编辑

我意识到我对这个问题很模糊。我需要做的是获得产品的总销售额,但仅限于由某个 customer_group_id 购买的地方。我需要将订单表加入到 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'

【问题讨论】:

    标签: magento


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这可行,但我按产品分组以获得总销售额。请查看我更新的问题(包含更多信息)。
    【解决方案2】:

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

    $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)'
         );
    

    我不知道为什么它会以这种方式工作而不是其他方式,但是嘿嘿!

    【讨论】:

      【解决方案3】:

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

      使用,'sales_flat_order'

      所以你的行会是,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 2013-04-15
        • 2012-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        相关资源
        最近更新 更多