Ich versuche herauszufinden, wie oft ein Produkt in den letzten zwei Wochen bestellt wurde. Bisher habe ich eine Schleife, um die Produkte zu bekommen.
foreach($productCollection as $product){
}
Ich gehe davon aus, dass ich in der Lage sein sollte, die Bestelldetails zu erhalten, wenn diese in der Schleife platziert sind
$order_items = Mage::getResourceModel('sales/order_item_collection')
Ich bin mir nicht sicher, wie ich das filtern soll. Ich weiß, dass es nach Produkt-ID gefiltert werden muss und dass die Bestellung innerhalb der letzten 2 Wochen erfolgen muss.
Wie sollte die Syntax für diese Abfrage aussehen?
Antworten:
Beginnen wir mit dem Nachdenken über SQL und nicht über Magento (wir werden später darauf zurückkommen). Ich würde es als solches schreiben (der Einfachheit halber Zeitzonen ignorieren):
Diese Abfrage funktioniert (ich habe getestet). Wie würden wir diese Abfrage in Magento schreiben?
sales_flat_order_item
- Magento hat eine spezielle Ressourcensammlung für diese Tabelle; davon können wir Gebrauch machen.SUM
in einer der Spalten ein verwendetWHERE
hat eineBETWEEN
Klausel - wir können wahrscheinlich verwenden,Zend_Db_Expr
um unseren benutzerdefinierten rollierenden 2-Wochen-Zeitrahmen auszugeben.GROUP
Mal sehen, ob wir es nicht zusammenstellen können, mit einem kurzen Aufruf
reset
, um sicherzustellen, dass wir nur die von uns definierten Spalten erhalten und sonst nichts:Ein einfaches Echo von
$query->getSelect()
zeigt uns, dass die Abfrage recht gut formatiert ist:Weitere Überlegungen:
In Zukunft möchten Sie diesen Bericht möglicherweise basierend auf dem Auftragsstatus filtern (Verknüpfung mit einer anderen Tabelle) oder sicherstellen, dass die Zeitzonen korrekt sind (derzeit basiert die Berichterstellung auf GMT).
Der Beitritt ist einfach:
Das Hinzufügen von Zeitzonen kann jedoch kompliziert werden. Suchen Sie nach
Mage_Core_Model_Date
Methoden, mit denen Zeitstempel von und nach GMT konvertiert werden. Schauen Sie sich auch die Sammlung der Verkaufsberichte an.Ich hoffe, das hilft! Viel Glück.
quelle
$query
war!