2013-04-15 5 views
1

저는 magento 1.7을 사용하고 있으며 sku와 일치하는 항목이 하나 이상있는 특정 increment_id에서 모든 주문을 받아야합니다.Magento 필터 주문 컬렉션 by 제품 SKU

여기에 내가 가진 무엇 :

 $orderCollection = Mage::getModel('sales/order')->getCollection() 
     ->addFieldToFilter('status', 
      array(
       'nin' => array(
        'new', 
        'pending', 
        'pending_payment', 
        'holded', 
        'canceled') 
      )) 
     ->addFieldToFilter('increment_id', array('gteq' => $last_order)); 

내가 함께 줄을 추가하는 경우 : 'SKU는'필드 아니기 때문에 나는 PHP 치명적인 오류가 발생합니다

$orderCollection->addFieldToFilter('sku', $findSku); 

. 나는 addAttributeToFilter()를 시도했으나 어느 것도 작동하지 않을 것이다.

다른 테이블과 조인을해야한다는 것을 알고 있지만 Magento에서 조인이 어떻게 이루어 졌는지 알지 못하고 어떤 테이블에 가입해야하는지 모르겠습니다.

도움이 될 것입니다.

답변

2

SKU는 주문이 아닌 주문 항목 테이블에 배치됩니다. 귀하의 마지막 질문이 하나 같이해야합니다

SELECT o.increment_id 
FROM sales_flat_order_item oi 
INNER JOIN sales_flat_order o ON o.entity_id = oi.order_id 
WHERE product_id=XXX 
ORDER BY o.increment_id DESC; 

이 쿼리

수행 할 수 있습니다 거의 같은 구문을 사용하여 :

$orderItem = Mage::getModel('sales/order_item')->getCollection(); 
$orderItem 
    ->getSelect() 
    ->joinInner(array('order' => Mage::getSingleton('core/resource')->getTableName('sales/order')), 'order.entity_id = main_table.order_id') 
    ->where('product_id=?', $productId) 
    ->order('main_table.order_id DESC'); 
+0

하지만 우리가 주문 작업해야하는 경우? –

+0

주문 항목 테이블을 주문 테이블에 가입시키고 group_concat mysql 함수를 사용하여 1 주문과 관련된 모든 skus를 연결할 수 있습니다. – freento

+1

올바른 엔티티는 'sales_order/item'이 아닌 'sales/order_item'입니다. – PartialOrder

관련 문제