2

有几种情况报告了此查询的标准解决方案不起作用(关于 SO 的类似问题很多,但没有任何明确的解决方案)。

检索“畅销书”集合的方法是使用此查询构建器:

    $storeId = Mage::app()->getStore()->getId();
    $collection = Mage::getResourceModel('reports/product_collection');

    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());

    $collection = $collection
        ->addFieldToFilter('*')
        ->addOrderedQty()
        ->addStoreFilter()
        ->setStoreId($storeId)
        ->setOrder('ordered_qty', 'desc')
        ->setPageSize(10)
        ->setCurPage(1);

现在,$collection结果包含一些虚假值,并且完全缺少重要属性(没有名称、价格等)。我什至无法在 1.7 中尝试这种核心代码解决方法。

任何人都可以发布一个经过 Magento 1.7 验证/认证/测试的解决方案吗?(或最新的 Magento 版本)。

4

1 回答 1

2

这可能适合您,也可能不适合您,它可能不是最有效的方式,但它为我完成了这项工作,因此在这里它与您的部分代码合并。

$storeId = Mage::app()->getStore()->getId();
$collection = Mage::getResourceModel('reports/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());

$collection = $collection
    ->addFieldToFilter('*')
    ->addStoreFilter()
    ->setStoreId($storeId)
    ->setPageSize(10)
    ->setCurPage(1);

$collection->getSelect()
    ->joinLeft(
        'sales_flat_order_item AS order_item',
        'e.entity_id = order_item.product_id',
        'SUM(order_item.qty_ordered) AS ordered_qty')
    ->group('e.entity_id')
    ->order('ordered_qty DESC')
;
于 2013-06-28T09:22:49.933 回答