Getting total number of rows using SQL_CALC_FOUND_ROWS in Zend DB Table Select
Is there a way to get the total number of rows in Zend db select like with using SQL_CALC_FOUND_ROWS in a regular mysql query. I haven't been able to find a similar functionality for this apart from running the same query without the limit cl开发者_JAVA百科ause.
$db->select()
->from($tableName, array(
new Zend_Db_Expr('SQL_CALC_FOUND_ROWS id'),
'name',
'price'
));
You could also try replacing all cols with COUNT(*) and running the query second time. It may actually be more efficient (even if it's counter-intuitive). This was the case for my app.
You can do it like this:
$select->reset('cols')->reset('limit')->cols('COUNT(*)'); //there is a constant for the 'cols' in Select class
$db->query($select);
Because no one else has anything better to offer I'll suggest to see this post on a ZF forum. It's from 2008 and ZF may have been upgraded since then.
Use this method if data inside the rows also needed
$rows = $db->select()->from('foo')->query()->fetchAll();
echo 'Total number of rows found : ' . count($rows);
if you just need the count of total number of rows then
$count = $db->select()->from('foo','COUNT(*)')->query()->fetchColumn();
精彩评论