Magento: How to filter a collection (sales/order) by a certain category? -
i spend lot of hours solve problem, don't :( need selection of ordered items special category. how can filter collection e.g. categoryid '44' ?
here code:
<?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 $order) { $items = $order->getallitems(); ... ?> thanks helping me, best, rik
here's 1 (perhaps) not elegant approach doing so...
first grab products in category want
$category_id = 44; $category = mage::getmodel("catalog/category")->load($category_id); $products = mage::getmodel("catalog/product")->getcollection() ->addcategoryfilter($category); next collect product ids can use them
$product_ids = array(); foreach ($products $product) $product_ids[] = $product->getid(); grab order items product id 1 of products our category
$items = mage::getmodel("sales/order_item")->getcollection() ->addfieldtofilter("product_id", array("in" => $product_ids)); now fetch unique orders referenced items
$orders = array(); foreach ($items $item) { $order_id = $item->getorderid(); if (!isset($orders[$order_id])) $orders[$order_id] = mage::getmodel("sales/order")->load($order_id); }
Comments
Post a Comment