如何在Magento ORM中使用sum(),count()等聚合函数.
考虑有一个表"test",其中包含以下值
-------------------------------------
productid | qty
-------------------------------------
1 | 2
-------------------------------------
2 | 3
-------------------------------------
3 | 5
-------------------------------------
如果我在我的模块中映射这个表,那么我可以得到像这样的集合数据
$_collection = Mage::getModel('mymodule/customcart')->getCollection();
如何使用COLLECTION获得与以下查询等效的结果?
select sum(qty) from test;
clo*_*eek 16
如果您的mymodule/customcart收藏品是基于EAV的,您可以使用addExpressionAttributeToSelect
$_collection = Mage::getModel('mymodule/customcart')->getCollection();
$_collection->addExpressionAttributeToSelect('qty', 'SUM({{item_qty}})', 'item_qty')
->groupByAttribute('productid');
Run Code Online (Sandbox Code Playgroud)
否则,您将不得不更直接地使用SQL:
$_collection = Mage::getModel('mymodule/customcart')->getCollection();
$_collection->getSelect()
->columns('SUM(item_qty) AS qty')
->group('productid');
Run Code Online (Sandbox Code Playgroud)
使用带有网格或寻呼机的聚合集合时要小心.他们依赖于getSelectCountSql哪些不能很好地处理分组查询,您可能必须提供自己的getSelectCountSql函数来返回准确的计数.