2

Catalog/Product/List.php をオーバーライドして、現在の製品コレクションを使用してベストセラー製品を取得しようとしています。

<?php
 if($this->getRequest()->getParam('best')==1){ 

     $this->_productCollection->getSelect()
          ->joinLeft(array('items'=>'sales_flat_order_item'), "items.product_id = e.entity_id", array('count'=>'SUM(qty_ordered)'))
          ->group('e.entity_id');
     $this->_productCollection->getSelect()->having('SUM(items.qty_ordered) > ?',0);
     return $this->_productCollection;
 }
?>

上記のコードを使用すると、次の SQL エラーが発生します。エラーは、having 句が原因で発生します。上記のコードで havinh 句を使用して、qty_ordered<1 を持つ結果の行を回避するにはどうすればよいですか

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'items.qty_ordered' in 'having clause'
4

1 に答える 1

10

売れ筋商品だけを手に入れたいなら

$storeId    = Mage::app()->getStore()->getId();

$products = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect(array('name', 'price', 'small_image')) //edit to suit tastes
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->setOrder('ordered_qty', 'desc'); //best sellers on top

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);

print_r($products->getData());

もっと見る @ http://magentocommerce.com/boards/viewthread/14764

于 2012-11-06T20:03:49.787 に答える