2013-11-10 1 views
1

Как получить идентификатор группы клиентов из коллекции sales/order_item? Я понимаю, что мне, возможно, понадобится вернуться к дереву продаж, но не знаю, как это сделать?Magento: Как получить идентификатор группы клиентов из отдела продаж/order_item?

Заранее благодарен!

EDIT

Я понимаю, что я был довольно расплывчатым с этим вопросом. Что мне нужно сделать, так это получить общий объем продаж для продукта, но только там, где вы приобрели определенный клиент_группы_ид. Мне нужно присоединиться к таблице заказов в таблице order_items, чтобы проверить client_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' 

ответ

2

Если у вас есть коллекция имеет тип Mage_Sales_Model_Resource_Order_Item_Collection, то вы можете сделать следующее. Предположим, что ваша коллекция $orderItems.

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

Спасибо, что будет работать, но я группирование по продукции для получения общего объема продаж. См. Мой обновленный вопрос (с дополнительной информацией). – a1phanumeric

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

Я не знаю, почему он работает именно так, а не другой, но эй хо!

0

Вместо использования, $collection->getTable('sales/order')

использование, 'sales_flat_order'.

Так что ваша линия будет,

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

 Смежные вопросы

  • Нет связанных вопросов^_^