【发布时间】:2011-04-29 12:32:41
【问题描述】:
有没有办法像在常规 mysql 查询中使用 SQL_CALC_FOUND_ROWS 一样获取 Zend db select 中的总行数。除了在没有限制子句的情况下运行相同的查询之外,我还没有找到类似的功能。
【问题讨论】:
标签: php sql mysql zend-framework
有没有办法像在常规 mysql 查询中使用 SQL_CALC_FOUND_ROWS 一样获取 Zend db select 中的总行数。除了在没有限制子句的情况下运行相同的查询之外,我还没有找到类似的功能。
【问题讨论】:
标签: php sql mysql zend-framework
$db->select()
->from($tableName, array(
new Zend_Db_Expr('SQL_CALC_FOUND_ROWS id'),
'name',
'price'
));
您也可以尝试将所有列替换为 COUNT(*) 并第二次运行查询。它实际上可能更有效(即使它违反直觉)。我的应用程序就是这种情况。
你可以这样做:
$select->reset('cols')->reset('limit')->cols('COUNT(*)'); //there is a constant for the 'cols' in Select class
$db->query($select);
【讨论】:
因为没有其他人可以提供更好的东西,我建议在 ZF 论坛上查看this post。从 2008 年开始,ZF 可能已经升级了。
【讨论】:
如果还需要行内的数据,请使用此方法
$rows = $db->select()->from('foo')->query()->fetchAll();
echo 'Total number of rows found : ' . count($rows);
如果你只需要总行数,那么
$count = $db->select()->from('foo','COUNT(*)')->query()->fetchColumn();
【讨论】: