在 ZF2 的分页器 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);
现在的问题是,如果我通过打印 sql 查询
echo str_replace('"', '', $select->getSqlString());
并在 mysql 上运行此查询,它会显示 12 个结果。
但$result->count();
显示 55 结果。
我试图找出问题并发现 Zend\Paginator\Adapter\DbSelectcount()
函数可能有问题。
当我在 Zend\Paginator\Adapter\DbSelectcount()
函数中打印 sql 查询时,它会从查询中删除 DISTINCT 子句并添加自己的计数列 c。
SELECT COUNT(1) AS c FROM myTable;
请建议我该怎么办?