Zend framework2 ZF2中的Zend\Paginator\Adapter\DbSelect不同问题

Zend framework2 ZF2中的Zend\Paginator\Adapter\DbSelect不同问题,zend-framework2,paginator,Zend Framework2,Paginator,在ZF2的paginator DbSelect适配器中使用DISTINCT查询时,我遇到了一个问题。我的脚步很快 首先,我创建了Select对象 $select = new Select(); $select->columns( array( 'personId' => new Expression("DISTINCT $this->table.person_id"), 'first_name', 'middle_name', 'last_name'

在ZF2的paginator DbSelect适配器中使用DISTINCT查询时,我遇到了一个问题。我的脚步很快

首先,我创建了Select对象

$select = new Select();
$select->columns(
    array(
          'personId' => new Expression("DISTINCT $this->table.person_id"),
'first_name', 'middle_name', 'last_name'));
$select->from($this->table);
然后我将这个对象传递给Zend\Paginator\Adapter\DbSelect

$result = new DbSelect($select, $this->adapter, $this->resultSetPrototype);
现在的问题是,如果我通过
echo str_replace(“”,“$select->getSqlString());
在mysql上运行这个查询,它显示12个结果

但是
$result->count();
显示55个结果

我试图找出问题所在,发现Zend\Paginator\Adapter\DbSelect
count()
函数可能有缺陷

当我在Zend\Paginator\Adapter\DbSelect
count()
函数中打印sql查询时,它从查询中删除DISTINCT子句,并添加了自己的计数列c

从myTable中选择计数(1)作为c;


请建议我该怎么做?

是的,Manish你是对的count函数有缺陷。它会留下distinct和group by子句。我也遇到了同样的问题。但没有找到解决方案

可以看出

如果使用distinct或group by子句,count函数计算的计数可能不同

有两种解决方案。 1) 提出问题,等待他们解决问题 2) 编写自己的适配器


我将使用第二个。ZF2最棒的一点是它为您提供了根据需要编写所有内容的灵活性。因此,请继续创建您自己的适配器

请参考:谢谢graphicmist:),我同意您的看法。我只是扩展了DBSelect类,并根据需要对其进行了修改。可能您可以选择t他回答正确,给了我一些回购积分