13

我正在尝试使用 Zend Framework 2 进行这样的查询:

SELECT count(*) as num FROM mytable

这是我用来构建我的 select 语句的代码(请记住,我已经导入了必要的类):

$select = new Select();
$select->from('mytable')
       ->columns(array('num'=>'count(*)'), false);

此代码不起作用,因为结果查询如下:

SELECT [count(*)] AS [num] FROM [mytable]

...引发以下错误:

Invalid column name 'count(*)'

这是由 count(*) 周围的方括号引起的。我怎样才能让它正常工作,基本上是在 SQL 中有 count(*) 而不是 [count(*)] 。另外,我知道您可以只使用常规查询来完成,但我需要它来处理 Select 对象。据我所知,这曾经与以前版本的 Zend 一起工作,我已经看到了很多解决方案,但 Zend Framework 2 没有。

4

3 回答 3

44

另一个论坛上的某个人很友善地给了我这个答案。这是如何完成的:

$select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
于 2012-12-10T22:13:23.167 回答
4

是的,没有new \Zend\Db\Sql\Expression('COUNT(*)'),只会COUNT(*)导致以下错误声明:

SQLSTATE [42S22]:未找到列:1054 未知列“字段列表”中的“albs.COUNT(*)”

拥有

new \Zend\Db\Sql\Expression('COUNT(*)')

解决了它。

于 2012-12-18T15:57:08.947 回答
0

你能试试这个代码吗?

$this->num = $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));

return $this->num;
于 2015-06-03T01:12:07.037 回答