2012-07-20 3 views
2

문제점을 해결하는 데 도움이되는 정보를 요청합니다. 나의 목적은 Magento 데이터베이스에서 모든 주문의 특정 제품 수량을 얻는 것입니다 (주문은 정확히 정의 된 상태 여야 함). Magento와 별개로 배치/스크립트를 사용하지만 Mage : app를 사용합니다. 모델 (논리적 인 접근이지만 같은 시간에 느린 것 같다)로 시작해야하는지 아니면 데이터베이스 (더 어렵습니다)에서 직접 작업해야하는지 모르겠습니다.Magento의 특정 주문 제품 수량 확인

감사합니다. 데이터베이스를 조회하면 해당 복잡하지 않습니다

감사합니다,

답변

3

는 : 결과에

SELECT * 
    FROM sales_flat_order o 
LEFT JOIN sales_flat_order_item i ON o.entity_id = i.order_id 
    WHERE o.status IN ('pending', 'processing') 
     AND i.product_id = <YOUR_PRODUCT_ID> 

total_qty_ordered 필드는 주문 수량을 나타냅니다. 빠른

<?php 

require_once('app/Mage.php'); 
umask(0); 
Mage::app('default'); 

$core_resource = Mage::getSingleton('core/resource'); 
$orders = Mage::getResourceModel('sales/order_collection'); 
$orders->getSelect()->joinLeft(array('ordered_products' => $core_resource->getTableName('sales/order_item')), 'main_table.entity_id = ordered_products.order_id', array('ordered_products.*')); 
$orders->addAttributeToSelect('*') 
     ->addFieldToFilter('status', array('in' => array('pending', 'processing'))) 
     ->addAttributeToFilter('main_table.store_id', Mage::app()->getStore()->getId()) 
     ->addAttributeToFilter('ordered_products.product_id', array('eq' => '2')); 
foreach($orders as $order) { 
    echo 'Order #' . $order->getId() . ': ' . $order->getData('total_qty_ordered') . '<br/>'; 
} 

는 첫 번째 방법이 될 수 있지만, 두 번째는 자기가 업그레이드-안전 할 것이다 : 모델을 통해 주문 품목의 수량을 얻기

중 하나 무거운 없습니다. 따라서 어떤 접근 방식을 사용할 것인지 결정해야합니다.

+0

도움을 주셔서 대단히 감사합니다. – Lormitto

+0

업데이트 된 마젠타 코드를 확인하십시오. 이제는 하나의 컬렉션에서 필요한 것을 얻습니다. –

+0

한 번 더 질문드립니다. 주문시 속성별로 항목을 가져올 수 있는지 알고 있습니까? foreach를 피하고 사용자 지정 속성으로 특정 항목을 가져오고 가능한 경우 모를 싶습니다. – Lormitto

관련 문제