我想知道如何在 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_revenue
和 total_orders
列。
实现此目的的另一种方法是关闭搜索和排序并调用列上的渲染器,然后实例化客户模型并将所有内容即时组合在一起。
关于magento - 如何在 magento 1.7 中添加客户 "total number of orders"和 "total spent"来订购网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743178/