我花了很多时间来解决这个问题,但我不明白:( 我需要从特殊类别中选择所有订购的商品。如何过滤收藏品,例如对于categoryId'44'?
这是我的代码:
<?php
require_once '/home/web/public_html/app/Mage.php';
Mage::app();
//$_category = Mage::getModel('catalog/category')->load($category_id);
$salesCollection = Mage::getModel("sales/order")->getCollection();
echo $salesCollection->getSelect();
foreach ($salesCollection as $order) {
$items = $order->getAllItems();
... ?>
感谢大家帮助我, 最好的,Rik
答案 0 :(得分:2)
sales_flat_order_item数据库表对类别一无所知。
所以我想你必须使用:$ collection-&gt; getSelect() - &gt; join(.....);
在sales_flat_order_item(Mage :: getModel('sales / order'))中,您可以找到product_id。 在catalog_category_product(Mage :: getModel('catalog / category_product'))中,您可以找到category_id,product_id,position
现在你必须加入他们......
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento
答案 1 :(得分:1)
这是一个(也许)不那么优雅的方法......
首先抓住您想要的类别中的所有产品
$category_id = 44;
$category = Mage::getModel("catalog/category")->load($category_id);
$products = Mage::getModel("catalog/product")->getCollection()
->addCategoryFilter($category);
接下来我只收集产品ID,以便我可以使用它们
$product_ids = array();
foreach ($products as $product)
$product_ids[] = $product->getId();
抓取产品ID为我们类别
中的产品之一的所有订单商品$items = Mage::getModel("sales/order_item")->getCollection()
->addFieldToFilter("product_id", array("in" => $product_ids));
现在获取项目引用的所有唯一订单
$orders = array();
foreach ($items as $item) {
$order_id = $item->getOrderId();
if (!isset($orders[$order_id]))
$orders[$order_id] = Mage::getModel("sales/order")->load($order_id);
}