gpt4 book ai didi

zend-framework2 - ZF2 中的 Zend\Paginator\Adapter\DbSelect DISTINCT 问题

转载 作者:行者123 更新时间:2023-12-04 07:21:39 24 4
gpt4 key购买 nike

我在 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);

现在的问题是,如果我通过echo str_replace('"', '', $select->getSqlString());并在 mysql 上运行此查询,它显示 12 个结果。

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

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

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

SELECT COUNT(1) AS c FROM myTable;

请建议我该怎么做?

最佳答案

是的,Manish,您是对的,计数函数有问题。它留下了 distinct 和 group by 子句。我也遇到了同样的问题。虽然没有找到解决方案。

正如我们所见https://github.com/zendframework/zf2/blob/master/library/Zend/Paginator/Adapter/DbSelect.php

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

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

我会选择第二个。 ZF2 最棒的事情之一是它为您提供了根据需要编写所有内容的灵 active 。所以继续创建你自己的适配器

关于zend-framework2 - ZF2 中的 Zend\Paginator\Adapter\DbSelect DISTINCT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com