2012-07-20 61 views
2

我想问你一些能够帮助我解决问题的信息。 我的目的是从Magento数据库获取每个订单的特定产品数量(订单必须处于确切的定义状态)。我使用Magento以外的批处理/脚本,但使用Mage:app。我不知道是否应该从模型开始(这似乎是合乎逻辑的方法,但是同时很慢)或直接在数据库上工作(这更困难)。在Magento中获取特定订单中的产品数量

谢谢你的任何建议。

问候,

回答

3

查询数据库并不复杂:在结果

SELECT * 
    FROM sales_flat_order o 
LEFT JOIN sales_flat_order_item i ON o.entity_id = i.order_id 
    WHERE o.status IN ('pending', 'processing') 
     AND i.product_id = <YOUR_PRODUCT_ID> 

total_qty_ordered场将代表订购数量。

通过模型获得订购的商品数量不重或者:

<?php 

require_once('app/Mage.php'); 
umask(0); 
Mage::app('default'); 

$core_resource = Mage::getSingleton('core/resource'); 
$orders = Mage::getResourceModel('sales/order_collection'); 
$orders->getSelect()->joinLeft(array('ordered_products' => $core_resource->getTableName('sales/order_item')), 'main_table.entity_id = ordered_products.order_id', array('ordered_products.*')); 
$orders->addAttributeToSelect('*') 
     ->addFieldToFilter('status', array('in' => array('pending', 'processing'))) 
     ->addAttributeToFilter('main_table.store_id', Mage::app()->getStore()->getId()) 
     ->addAttributeToFilter('ordered_products.product_id', array('eq' => '2')); 
foreach($orders as $order) { 
    echo 'Order #' . $order->getId() . ': ' . $order->getData('total_qty_ordered') . '<br/>'; 
} 

第一种方法可能是快,但第二个将磁升级安全的。所以你决定使用哪种方法。

+0

非常感谢您的帮助 – Lormitto 2012-07-20 11:44:24

+0

请检查更新的magento代码。现在它可以在一个系列中获得你所需要的。 – 2012-07-20 12:04:42

+0

还有一个问题。你是否知道在订单的情况下是否可以通过属性获取项目。我想避免foreach并通过自定义属性获取特定项目,并且根本不知道是否可能? – Lormitto 2012-07-20 12:14:15

相关问题