有没有办法获得Zend数据库中的总行数,就像在普通的mysql查询中使用SQL_CALC_FOUND_ROWS一样。除了在没有限制条款的情况下运行相同的查询外,我一直无法找到类似的功能。在Zend DB表中使用SQL_CALC_FOUND_ROWS获取总行数
3
A
回答
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();
虽然它的工作效率非常低,特别是如果你使用MySQL。使用calc_rows可以保存大量数据的检索,以找出有多少条目没有任何分页限制。为了使它独立于数据库,你也可以实现一个单独的COUNT查询。 – 2011-09-12 11:33:39
有效的方式添加我虽然需要总行数 – 2011-09-12 11:45:03