J'essaie de savoir combien de fois un produit a été commandé au cours des deux dernières semaines. Jusqu'à présent, j'ai une boucle pour obtenir les produits.
foreach($productCollection as $product){
}
Je suppose que je devrais être en mesure d'obtenir les détails de la commande avec celui-ci placé dans la boucle
$order_items = Mage::getResourceModel('sales/order_item_collection')
Je ne sais pas trop comment filtrer cela. Je sais qu'il doit être filtré par ID de produit et que la commande doit avoir été effectuée au cours des 2 dernières semaines.
À quoi devrait ressembler la syntaxe pour cette requête, s'il vous plaît?
Réponses:
Commençons par penser au SQL, pas à Magento (nous y reviendrons plus tard). Je l'écrirais comme tel (en ignorant les fuseaux horaires pour plus de simplicité):
Cette requête fonctionne (j'ai testé). Alors, comment pourrions-nous écrire cette requête dans Magento?
sales_flat_order_item
- Magento a une collection de ressources spéciale pour cette table; nous pouvons en faire usage.SUM
dans l'une des colonnesWHERE
a uneBETWEEN
clause - nous pouvons probablement utiliserZend_Db_Expr
pour sortir notre calendrier personnalisé de 2 semaines.GROUP
Voyons voir si nous ne pouvons pas le mettre ensemble, alors, avec un appel rapide à
reset
pour nous assurer que nous obtenons uniquement les colonnes que nous définissons, et rien d'autre:Un simple écho de
$query->getSelect()
nous montre que la requête est assez bien formatée:Autres considérations:
À l'avenir, vous souhaiterez peut-être filtrer ce rapport en fonction du statut de la commande (rejoindre une autre table) ou vous assurer que les fuseaux horaires sont exacts (en ce moment, il génère des rapports basés sur GMT).
L'adhésion est simple:
Mais l'ajout de fuseaux horaires peut devenir compliqué. Recherchez
Mage_Core_Model_Date
des méthodes de conversion d'horodatage vers et depuis GMT. Consultez également la collection des rapports de vente.J'espère que cela pourra aider! Bonne chance.
la source
$query
était!