Jaime Neto | desenvolvimento para web

jan/10

30

Melhorando o Zend_Db_Table – Parte 3: Contando registros da tabela


Tá… o Zend_Db_Table já me dá métodos pra inserir, alterar, excluir e fazer busca de registros. Mas… e se eu só quiser saber quantos registros tenho na tabela? Ele não tem por padrão um método para me dizer isso. Eu precisaria fazer um fetchAll() e depois um count() no resultado, ou montar uma query pra me devolver esse resultado, ou passar como parâmetro no bind uma string 'COUNT(*)'… Mas tudo isso parece pouco prático, quando poderíamos ter um método count() pra fazer isso pra nós…

Então é isso que fiz… Implementei na minha classe My_Db_Table_Abstract a interface Coutable, que ficou dessa forma:

class My_Db_Table_Abstract extends Zend_Db_Table_Abstract 
  <strong>implements Countable</strong>
{
  /* Aqui ficam os métodos citados nos posts anteriores */
 
  public function count($where = null)
  {
     $select = $this->select();
 
     if ($where !== null) {
         $this->_where($select, $where);
     }
 
     $select->from($this->_name, array('count' => 'COUNT(*)'));
 
     $count = $this->getAdapter()->fetchRow($select);
     return intval($count['count']);
  }
}

Pra ficar ainda mais completo, o método pode receber como parâmetro algumas restrições, caso não se queria contar a quantidade total, e sim algo mais específico. Agora, fica bem mais fácil:

$tbUsuarios = new Usuarios();
$qtty = $tbUsuarios->count();

Se quisermos, por exemplo, saber quantos usuários usam gmail:

$qtty = $tbUsuarios->count("email LIKE '%@gmail.com'");

·

2 comments

Leave a Reply

<<

>>

Theme Design by devolux.nh2.me