2011-01-12 25 views
5

Belirli bir ürünü içeren tüm siparişleri bulmak için Magento'da bir yol var mı? Yönetim panelinden yapılabiliyorsa daha da iyi olurdu.Magento: Bir ürünü içeren siparişleri bul

Raporlar -> Ürünler -> Sipariş Edilen Ürünler, ürünün satıldığı gün ve kaç sipariş verdiğini bana verir, ancak ürüne hangi özel siparişleri verdiğimi bilmem gerekir.

Teşekkür ederiz!

+1

[belli bir ürüne sahip magento uzantısında siparişlerin bir listesini alın] olası yinelenen (http://stackoverflow.com/questions/18125638/get-a -sipariş-in-magento-uzantısı-bu-var-bir-ürün var) – RichardBernards

+0

belki de kabul edilen cevabı değiştirmelisiniz ... – RichardBernards

cevap

7

Basit MySQL sorgu tarafından alabilirsiniz: -

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

VEYA

Sen ihtiyaçlarına göre raporlar özelleştirebilirsiniz. yerine order_id ait increment_id (artan Sipariş Numarası) almak istiyorsanız

+0

Yup, neredeyse denedim. Benim hatam, ürünün ismi yerine ürün adı yerine "name" alanı yerine "description" alanında ürün isminin bulunmasıydı. – fdierre

+0

Magento düz tablolar kullanmayacak şekilde ayarlanırsa bu nasıl çalışır? – Benubird

+1

@Benubird düz tabloları kullanma kararı veya sadece kataloğu etkilemez, siparişler her zaman düz tabloları kullanır (en azından Magento'nun ilk sürümünden, belki 1.2) – OSdave

4

, sadece bu Bildirimi kullanabilirsiniz:

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

Bu bir yıl sonra olsa bile, bunun bu sorudaki daha kullanışlı kod olduğunu söylemeliyim ve her birkaç haftada bir referans olarak kendimi bulmam gerektiğini düşünüyorum. Teşekkürler. – James

+0

Bunu duymak güzel, teşekkürler;) – Patrick

19

başka bir soru bu soruya; Hızlı referans için Get a list of orders in magento extension that have a certain product

:

$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

Doğru cevap IMO olmalı ... Veritabanına doğrudan sorgulamamalısınız, bu çok daha iyi ve zarif bir çözümdür. –

+1

Seçilen doğru cevap olsa bile, bu soruyu yanıtlamak yerine bu soruyu çoğaltmak daha iyi olurdu. – Luke

+0

@Coulton yumrukdan biraz sonra, ama o zaman bayrak alamadım ... Bu şekilde – RichardBernards