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'"); |
Qual a versão do Zend utilizada?
ZF1