Próbuję dowiedzieć się, ile razy produkt został zamówiony w ciągu ostatnich dwóch tygodni. Do tej pory mam pętlę, aby uzyskać produkty.
foreach($productCollection as $product){
}
Zakładam, że powinienem być w stanie uzyskać szczegóły zamówienia z tym umieszczonym w pętli
$order_items = Mage::getResourceModel('sales/order_item_collection')
Nie jestem pewien, jak to filtrować. Wiem, że należy go filtrować według identyfikatora produktu, a zamówienie musi zostać złożone w ciągu ostatnich 2 tygodni.
Jak powinna wyglądać składnia tego zapytania?
Odpowiedzi:
Zacznijmy od myślenia o SQL, a nie o Magento (do tego dojdziemy później). Tak bym napisał (ignorując strefy czasowe dla uproszczenia):
To zapytanie działa (przetestowałem). Jak więc moglibyśmy napisać to zapytanie w Magento?
sales_flat_order_item
- Magento ma specjalną kolekcję zasobów dla tej tabeli; możemy z tego skorzystać.SUM
w jednej z kolumnWHERE
maBETWEEN
klauzulę - prawdopodobnie możemy użyćZend_Db_Expr
do wygenerowania niestandardowego 2-tygodniowego przedziału czasowego.GROUP
Zobaczmy, czy nie możemy tego złożyć razem, dzięki szybkiemu wezwaniu,
reset
aby upewnić się, że otrzymamy tylko zdefiniowane kolumny i nic więcej:Proste echo
$query->getSelect()
pokazuje, że zapytanie jest sformatowane całkiem dobrze:Inne uwagi:
W przyszłości możesz chcieć filtrować ten raport na podstawie statusu zamówienia (dołączenie do innej tabeli) lub możesz upewnić się, że strefy czasowe są dokładne (obecnie raportowanie oparte jest na GMT).
Dołączenie jest proste:
Ale dodanie stref czasowych może się skomplikować. Poszukaj
Mage_Core_Model_Date
metod, które konwertują znaczniki czasu na i z GMT. Zajrzyj również do kolekcji raportów sprzedaży.Mam nadzieję, że to pomaga! Powodzenia.
źródło
$query
było!