제품을 몇 번 주문했는지 확인


9

지난 2 주 동안 제품을 몇 번 주문했는지 확인하려고합니다. 지금까지 제품을 얻는 루프가 있습니다.

    foreach($productCollection as $product){

    }

루프 안에 배치 된 주문 세부 정보를 얻을 수 있어야한다고 가정합니다.

    $order_items = Mage::getResourceModel('sales/order_item_collection')

필터링 방법에 대해 잘 모르겠습니다. 제품 ID로 필터링해야하며 주문은 지난 2 주 이내에 이루어져야한다는 것을 알고 있습니다.

이 쿼리의 구문은 무엇입니까?


간단한 쿼리를 수행하기 위해 MySQL에 액세스 할 수 있습니까, 아니면 Magento에서 일부 기능을 수행 하시겠습니까?
brentwpeterson

불행히도 MySQL 쿼리를 수행 할 수 없습니다. 기본적으로이 기능을 그리고 그것은 단지 PHP를 사용하여 작업하는 경우가 가장 좋은 것입니다
develophper

답변:


21

Magento가 아니라 SQL에 대해 생각하는 것으로 시작하겠습니다 (나중에 설명하겠습니다). 나는 그것을 간단하게 표현하기 위해 시간대를 무시하면서 이렇게 쓸 것이다.

SELECT sku,SUM(qty_ordered) FROM sales_flat_order_item
WHERE created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()
GROUP BY sku

그 쿼리가 작동합니다 (테스트했습니다). 그렇다면이 쿼리를 Magento로 작성하는 방법은 무엇입니까?

  • 첫째, 우리는 전적으로이를 기반으로한다는 것을 알 수 있습니다 sales_flat_order_item.-마 젠토는이 테이블을위한 특별한 리소스 컬렉션을 가지고 있습니다. 우리는 그것을 이용할 수 있습니다.
  • 우리는이를 사용하고 있음을 알 SUM열 중 하나에
  • WHEREBETWEEN절을 - 우리가 아마 사용할 수있는 Zend_Db_Expr2 주간의 기간을 압연 출력 우리의 정의에.
  • 마지막으로 GROUP

우리가 그것을 reset정의 할 수 없는지 확인하기 위해 빠른 호출로 우리가 그것을 묶을 수 없는지 보자 .

$query = Mage::getResourceModel('sales/order_item_collection');
$query->getSelect()->reset(Zend_Db_Select::COLUMNS)
        ->columns(array('sku','SUM(row_total)'))
        ->where(new Zend_Db_Expr('created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()'))
        ->group(array('sku'));

간단한 에코 $query->getSelect()는 쿼리가 매우 잘 형식화되었음을 보여줍니다.

SELECT `main_table`.`sku`, SUM(qty_ordered) FROM `sales_flat_order_item` AS `main_table` WHERE (created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()) GROUP BY `sku`

다른 고려 사항 :

나중에 주문 상태 (다른 테이블에 참여)를 기준으로이 보고서를 필터링하거나 시간대가 정확한지 확인하고 싶을 수도 있습니다 (지금은 GMT를 기준으로보고 함).

가입은 간단합니다 :

->join(array('e' => 'sales_flat_order'),'main_table.order_id = e.entity_id')

그러나 시간대를 추가하면 복잡해질 수 있습니다. Mage_Core_Model_Date타임 스탬프를 GMT로 변환하거나 GMT에서 변환하는 방법을 찾으십시오 . 판매 보고서 모음도 살펴보십시오.

희망이 도움이됩니다! 행운을 빌어 요.


1
네가 옳아. 이 방법으로 모든 마 젠토 클래스를 로딩하는 것은 완전한 과잉입니다
Sander Mangel

내 업데이트를 참조하십시오-무엇이 포함되었는지 잊어 버렸습니다 $query!
philwinkle

구매 한 수량을 달러 금액 으로 대체하는 또 다른 업데이트 입니다.
philwinkle

많은 @philwinkle 감사합니다. 내 요구 사항에 맞게 솔루션을 사용자 정의했습니다. 다시 한번 감사드립니다.
Pavan Kumar

구성 가능한 제품 만 얻을 수 있음은 주문과 관련이없는 상위 제품을 의미하며 판매 한 시간을 계산합니다.
Bhupendra Jadeja
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.