SELECT (COUNT(*)) ZF2 查询

SELECT (COUNT(*)) query in ZF2

我正在尝试使用 table 网关执行 SQL 查询,其中包含 ZF2 中的 COUNT(*) 表达式。这是我模型中的函数:

public function brKomentariUred(){
        $sql = $this->tableGateway->getSql();
        $select = $sql->select();
        $select->columns(array('brKomentari' => new \Zend\Db\Sql\Expression('count(komentarID)'), 'uredId' => 'ured'));
        $select->group('ured');
        //echo $sql->getSqlStringForSqlObject($select); die();
        return $this->tableGateway->selectWith($select);      
    }

打印查询时它是正确的

SELECT count(komentarID) AS `brKomentari`, `komentar`.`ured` AS `uredId` FROM `komentar` GROUP BY `ured`

在控制器中,我尝试使用此代码调用查询

foreach($this->getKomentarTable()->brKomentariUred() as $r){
                $arr = $this->object_to_array($r);
                print_r($arr);
            }

它不是 return 元素和设备 ID 的数量,因为它写在 SELECT 中,但是 return 是 SELECT * FROM komentar,但没有值。这是正确的代码还是我的代码出错了?其他查询都可以。

在此先感谢您的帮助。

在您的位置,我将执行以下步骤:

  • 将表达式对象替换为new \Zend\Db\Sql\Expression('COUNT(komentarID)')
  • 我不会在 group by 运算符中使用别名,它可能不起作用。所以, 将此 $select->group('ured') 替换为 $select->group('komentar.ured')

另外,结果处理要简化:

$resultSet = $this->getKomentarTable()->brKomentariUred();
print_r($resultSet->toArray());