2011-01-12 17 views
5

Czy istnieje sposób w Magento, aby znaleźć wszystkie zamówienia zawierające dany produkt? Byłoby jeszcze lepiej, gdyby można to było zrobić z panelu administracyjnego.Magento: znajdź zamówienia zawierające produkt

Raporty -> Produkty -> Produkty Zamówione daje mi dzień w którym został sprzedany produkt i ile zamówień go zawiera, ale muszę wiedzieć, które konkretne zamówienia obejmują dany produkt.

Dziękujemy!

+1

możliwe duplikat [Pobierz listę zamówień w rozszerzeniu Magento, które mają pewną produktu] (http://stackoverflow.com/questions/18125638/get-a -list-of-order-in-magento-extension-that-have-a-certain-product) – RichardBernards

+0

Może powinieneś zmienić zaakceptowaną odpowiedź ... – RichardBernards

Odpowiedz

7

można uzyskać poprzez proste zapytania mysql: -

select order_id from sales_flat_order_item where product_id=//given product id 

LUB

Można dostosować raportów w zależności od potrzeb.

+0

Tak, to prawie to, co próbowałem. Mój błąd polegał na tym, że zamiast nazwy product_id miałem nazwę produktu, aby wyszukać nazwę produktu w polu "description" zamiast w polu "name". – fdierre

+0

Jak by to działało, gdyby magento nie używało płaskich stołów? – Benubird

+1

@Benubird decyzja o użyciu płaskich tabel lub nie tylko wpływa na katalog, zamówienia zawsze używać płaskich tabel (przynajmniej od wczesnej wersji Magento, może 1.2) – OSdave

4

Jeśli chcesz uzyskać increment_id (przyrostowe numer Order) zamiast ORDER_ID, można po prostu użyć tego stwierdzenia:

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; 
+0

Mimo że jest to rok później, muszę powiedzieć, że jest to bardziej przydatny kod w tym pytaniu i wracam do niego co kilka tygodni jako punkt odniesienia. Dzięki. – James

+0

Miło to słyszeć, dziękuję;) – Patrick

19

odpowiedziałem na to pytanie innym pytaniem; Get a list of orders in magento extension that have a certain product

Do szybkiego odniesienia:

$productId = {PRODUCT_ID}; 
$orders = array(); 
$collection = Mage::getResourceModel('sales/order_item_collection') 
    ->addAttributeToFilter('product_id', array('eq' => $productId)) 
    ->load(); 
foreach($collection as $orderItem) { 
    $orders[$orderItem->getOrder()->getIncrementId()] = $orderItem->getOrder(); 
} 
+2

To powinna być właściwa odpowiedź IMO ... Nie powinieneś pytać bezpośrednio do bazy danych, jest to znacznie lepsze i eleganckie rozwiązanie. –

+1

Nawet gdyby była to wybrana prawidłowa odpowiedź, lepiej byłoby oznaczyć to pytanie jako duplikat zamiast odpowiadać na to pytanie. – Luke

+0

@Coulton trochę po uderzeniu, ale w tym czasie nie mogłem flagować ... Stąd w ten sposób – RichardBernards

Powiązane problemy