有没有办法在常规mysql查询中使用SQL_CALC_FOUND_ROWS来获取Zend db select中的总行数。除了运行没有limit子句的相同查询之外,我还没有找到类似的功能。
答案 0 :(得分: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);
答案 1 :(得分:2)
因为没有其他人可以提供更好的内容,我建议您在ZF论坛上查看this post。从2008年起,ZF可能已经升级了。
答案 2 :(得分:0)
如果行内的数据也需要
,请使用此方法 $rows = $db->select()->from('foo')->query()->fetchAll();
echo 'Total number of rows found : ' . count($rows);
如果你只需要总行数,那么
$count = $db->select()->from('foo','COUNT(*)')->query()->fetchColumn();