Zend_Db:如何从表中获取行数?

And*_*rew 12 mysql zend-framework zend-db-table

我想知道表中有多少行.我使用的数据库是MySQL数据库.我已经有一个Db_Table类用于调用fetchAll().但我不需要表中的任何信息,只需要行数.如何在不调用的情况下获取表中所有行的计数fetchAll()

Dec*_*ler 26

$count = $db->fetchOne( 'SELECT COUNT(*) AS count FROM yourTable' );
Run Code Online (Sandbox Code Playgroud)


Der*_*huk 8

计算fetchAll被认为有害的行.

以下是如何使用Zend_Db_Select方式:

$habits_table = new Habits(); /* @var $habits_table Zend_Db_Table_Abstract */
$select = $habits_table->select();
$select->from($habits_table->info(Habits::NAME), 'count(*) as COUNT');
$result = $habits_table->fetchRow($select);
print_r($result['COUNT']);die;
Run Code Online (Sandbox Code Playgroud)


Tom*_*far 5

正确的Zend-Way是这样使用Zend_Db_Select的:

$sql = $table->select()->columns(array('name', 'email', 'status'))->where('status = 1')->order('name');
$data = $table->fetchAll($sql);
$sql->reset('columns')->columns(new Zend_Db_Expr('COUNT(*)'));
$count = $table->getAdapter()->fetchOne($sql);
Run Code Online (Sandbox Code Playgroud)

这就是在Zend_Paginator中完成的方式。另一种选择是SQL_CALC_FOUND_ROWS在列列表之前添加,然后通过此查询获取找到的行数:

$count = $this->getAdapter()->fetchOne('SELECT FOUND_ROWS()'); 
Run Code Online (Sandbox Code Playgroud)