依靠Zend_Db_Select

bre*_*vhb 4 php zend-framework zend-db-select

假设我有一个随机的zend_db_select对象.

如何对该对象执行计数,因此我知道满足查询的项目数量.

我尝试了以下方法:

$data->TotalRecords = $select->columns(new Zend_Db_Expr('COUNT(*)'))->query()->fetch();
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

消息:没有为FROM子句指定表

查询本身工作正常并返回结果集.

Dav*_*unt 10

有几种方法可以指定要在Zend_Db_Select中获取的列.以下两个产品的SQL相同

$select = $db->select()
             ->from('myTable', array())
             ->columns(array('TotalRecords' => new Zend_Db_Expr('COUNT(*)')));

$select = $db->select()
             ->from('myTable', array('TotalRecords' => new Zend_Db_Expr('COUNT(*)')));
Run Code Online (Sandbox Code Playgroud)

from方法接受第一个参数,表名和第二个参数,即要获取的列数组.如果您正在使用表达式,则可以指定'key'=> Expr.

将Zend_Db_Select转换为SQL字符串以进行调试或与其他函数一起使用非常容易.

echo $select; // prints SELECT COUNT(*) AS `TotalRecords` FROM `myTable`
Run Code Online (Sandbox Code Playgroud)

这使用了一个toString方法,该方法由Zend_Db提取方法自动调用:

$total = $db->fetchOne($select); 

echo $total; //prints the number of rows matching the query
Run Code Online (Sandbox Code Playgroud)

其中$ db是Zend_Db的一个实例.


rah*_*ari 1

使用$select->__toString()方法输出生成的查询并查看它有什么问题。

如果您的查询中没有 from 子句,则将From()方法添加到您的选择对象中。