Mysql getSelectCountSql()不重置组部分

Mysql getSelectCountSql()不重置组部分,mysql,magento,Mysql,Magento,在lib/Varien/Data/Collection/Db.php中,有一个方法getSelectCountSql(),由所有Magento集合继承。在此方法中,将克隆Select对象,并准备专门用于获取集合项的计数值,该集合项不加载集合,而是使用轻量级Select查询DB 通过重置Select中不必要的部分和可能影响计数结果的部分来完成准备。代码如下: public function getSelectCountSql() { $this->_renderFilters(

在lib/Varien/Data/Collection/Db.php中,有一个方法getSelectCountSql(),由所有Magento集合继承。在此方法中,将克隆Select对象,并准备专门用于获取集合项的计数值,该集合项不加载集合,而是使用轻量级Select查询DB

通过重置Select中不必要的部分和可能影响计数结果的部分来完成准备。代码如下:

public function getSelectCountSql()
{   
    $this->_renderFilters();
    $countSelect = clone $this->getSelect();
    $countSelect->reset(Zend_Db_Select::ORDER);
    $countSelect->reset(Zend_Db_Select::LIMIT_COUNT);
    $countSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
    $countSelect->reset(Zend_Db_Select::COLUMNS);
    ...
我想知道,Magento工程师没有包括
$countSelect->reset(Zend_Db_Select::GROUP)的真正原因是什么以及其他部分

Magento似乎没有从一个版本到另一个版本解决这个问题,我非常确定这是一个bug,所以也许我错了?如果有人能解释不将组零件包括在重置零件清单中的原因,我将不胜感激


PS这不是重复的,我知道如何添加修复,我只是想得到一个解释(如果存在的话)为什么Magento工程师从一开始就没有这么做,并继续忽略这个问题。

这不是一个真正的错误,我的假设是错误的。

这已经在我的Magento CE 1.9.2.2中得到了修复(虽然我不确定第一个版本是哪个版本的)。

有趣的问题。我个人认为这不太好,我想这取决于你想要达到的目标。如果我要创建一个具有风格和颜色属性的项目集合,我想要独特的颜色(因此按颜色分组)。,我希望收集的数量是唯一颜色的数量,而不是我表格中的项目总数。感谢您的回答,@Cags-这完全有道理,但这似乎更像是唯一的场景。更常见的是在实体_id字段上使用分组(或任何称为增量的内容)为了防止在连接多个表时出现重复条目。因此,重置
group
对我来说更有意义,这样更常见的场景才能正常工作。但无论如何,你的观点也很有说服力。