我尝试使用在ZF2中包含COUNT(*)表达式的表网关执行SQL查询。这是我模型中的功能:
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);
}
它不会返回在SELECT中写入的元素和devicesID的数量,但返回为SELECT * FROM komentar
,但没有值。这是正确的代码还是我的代码中出现了一些错误?其他查询都可以。
提前感谢您的帮助。
答案 0 :(得分:1)
在我的位置,我会执行以下步骤:
new \Zend\Db\Sql\Expression('COUNT(komentarID)')
group by
运算符中使用别名,它可能无效。所以,
将此$select->group('ured')
替换为
$select->group('komentar.ured')
此外,应简化结果处理:
$resultSet = $this->getKomentarTable()->brKomentariUred();
print_r($resultSet->toArray());