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());
我正在尝试使用 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());