2010-10-23 75 views

回答

2

因为没有其他人有更好的提供,我会建议在ZF论坛上看到this post。从2008年开始,ZF可能会从此升级。

11
$db->select() 
    ->from($tableName, array(
     new Zend_Db_Expr('SQL_CALC_FOUND_ROWS id'), 
     'name', 
     'price' 
    )); 

您也可以尝试用COUNT(*)替换所有的cols和运行查询第二次。它可能实际上更有效率(即使它是反直觉的)。这是我的应用程序的情况。

你可以这样说:

$select->reset('cols')->reset('limit')->cols('COUNT(*)'); //there is a constant for the 'cols' in Select class 
$db->query($select); 
0

使用此方法,如果还需要

$rows = $db->select()->from('foo')->query()->fetchAll(); 

    echo 'Total number of rows found : ' . count($rows); 

如果你只需要行的总数的计数,然后

行内数据
$count = $db->select()->from('foo','COUNT(*)')->query()->fetchColumn(); 
+0

虽然它的工作效率非常低,特别是如果你使用MySQL。使用calc_rows可以保存大量数据的检索,以找出有多少条目没有任何分页限制。为了使它独立于数据库,你也可以实现一个单独的COUNT查询。 – 2011-09-12 11:33:39

+0

有效的方式添加我虽然需要总行数 – 2011-09-12 11:45:03