我正在使用magento 1.7,我需要获取某些increment_id的所有订单,其中包含至少一个与sku匹配的项目。
这就是我所拥有的:
$orderCollection = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('status',
array(
'nin' => array(
'new',
'pending',
'pending_payment',
'holded',
'canceled')
))
->addFieldToFilter('increment_id', array('gteq' => $last_order));
如果我添加一行:
$orderCollection->addFieldToFilter('sku', $findSku);
由于'sku'不是字段,我将收到PHP致命错误。我已经尝试过addAttributeToFilter(),它也无法正常工作。
我知道我需要与另一个表建立连接,但我不知道在Magento中如何建立联接,我不知道我应该加入哪个表。
非常感谢任何帮助。
答案 0 :(得分:3)
SKU不在订单中的订单商品表中。 您的最终查询必须如下所示:
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;
这个查询可以使用几乎这样的语法来完成:
$orderItem = Mage::getModel('sales/order_item')->getCollection();
$orderItem
->getSelect()
->joinInner(array('order' => Mage::getSingleton('core/resource')->getTableName('sales/order')), 'order.entity_id = main_table.order_id' )
->where('product_id=?', $productId)
->order('main_table.order_id DESC');