Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, eu tenho as seguintes tabelas: Usuarios, Visitas e Acompanhamentos.
Um usuário pode fazer várias visitas e vários acompanhamentos.
Eu já possuo meus models para cada tabela e já referenciei eles em minha classe.
Eu gostaria de listar todos os usuários e a cada usuário, gostaria de obter o total de visitas e o total de acompanhamento que ele fez. Teria como eu fazer isso via findDependentRowset() ou findParentRow()?
Caso eu não consiga fazer isso, só mesmo por subquery?
Teria como eu fazer isso via findDependentRowset() ou findParentRow()?
Sim, tem como!
Mas Antes preciso confirmar se você fez a configuração e relacionamento das tabelas no seu db-table.???
Exemplo:
class Imasters extends Zend_Db_Table_Abstract
{
protected $_name = 'imaster';
protected $_dependentTables = array('ImasterBugsReport');
protected $_referenceMap = array(
'Reporter' => array(
'columns' => 'reported_by',
'refTableClass' => 'ImastersAccounts',
'refColumns' => 'account_name'
),
'Engineer' => array(
'columns' => 'assigned_to',
'refTableClass' => 'ImastersAccounts',
'refColumns' => 'account_name'
),
'Verifier' => array(
'columns' => array('verified_by'),
'refTableClass' => 'ImastersAccounts',
'refColumns' => array('account_name')
)
);
}Então cara, é só dar um count no array como nosso amigo acima disse:
Exemplo no controller.
$id = $this->_request('id',false);
$table = new Usuarios();
/pega o usuario/
$row = $table->fetchRow(array('id = ?'=>$id));
/Pega as visitas/
$visitas = $row->findDependentRowset(new Usuarios_Visitas());
$totalVisitas = $visitas->count();
/pega os acompanhamentos/
$acompanhamentos = $row->findDependentRowset(new Usuarios_Acompanhamentos());
$totalAcompanhamentos = $acompanhamentos->count();
Lembrando de fazer certinhos os mapeamentos nas models como nosso amigo citou um codigo de exemplo a cima.
Com subquery você já conseguira retornar os totais na mesma consulta.
Com os metodos findDependentRowset() ou findParentRow() você pode fazer um count() no array de retorno.
Acredito que essa seja a forma mais simples de resolver seu problema.