magento - 如何在 magento 1.7 中添加客户 "total number of orders"和 "total spent"来订购网格

标签 magento

我想知道如何在 magento 1.7 的订单网格中添加以下两个额外的列

  • 客户订单总数
  • 客户在订单上花费的总金额

我已成功添加列,但无法让它显示任何数据。我相信问题的关键在于函数*_prepareCollection()*。

最佳答案

你是对的,Magento 中任何网格的内容都包含在集合中。

集合对象最终解析为 MySQL 查询,因此为了让它们显示在网格中,您需要将该数据加入到集合中。只要您要求它们可搜索和可排序。

您可以通过将子选择加入到您的集合中来实现此目的,例如:

    $alias = 'subselect';
    $subselect = Mage::getModel('Varien_Db_Select', 
                Mage::getSingleton('core/resource')->getConnection('core_read')
            )->from('sales_flat_order_grid', array(
                    'customer_id as s_customer_id', 
                    'sum(grand_total) as total_revenue', 
                    'count(*) as total_orders')
            )->group('customer_id');

    $collection->getSelect()
        ->joinInner(array($alias => $subselect), 
                "{$alias}.s_customer_id = main_table.customer_id");

在您的 _prepareCollection() 调用中,该调用应覆盖 app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php 中的调用。

然后,您可以在 _prepareColumns() 函数中定义 total_revenuetotal_orders 列。

实现此目的的另一种方法是关闭搜索和排序并调用列上的渲染器,然后实例化客户模型并将所有内容即时组合在一起。

关于magento - 如何在 magento 1.7 中添加客户 "total number of orders"和 "total spent"来订购网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743178/

相关文章:

magento - 如何让Magento支持一些法语字符?

php - 从 Magento sitemap.xml 生成中排除某些产品

通过阅读教程了解 Magento 基本问题

Magento 2 - 以编程方式创建订单并使用自定义选项添加产品

php - 如何获取 Magento 的付款信息?

magento - 您如何以编程方式在产品页面上的 magento 中获得税率

jquery - Magento + jquery slider $ 未定义

performance - 无法找到为什么一些小图片需要 10 秒才能加载

Magento 加载产品事件观察器?

magento - 哪些 Magento 网站目录和文件不应该使用 Codeguard 等云备份解决方案进行备份?