Existe uma facilidade muito grande para se trabalhar com relacionamento de tabelas no Zend Framework, e evita-se aquelas enormes querys para trazer meia dúzia de dados.
Após criar os Models via Zend_Tool
zf create model nome-da-tabela
Abra o model da tabela principal e insira na classe a linha que registra qual a tabela filha:
protected $_dependentTables = array('Application_Model_DbTable_NomeDaTabelaFilha');
Em seguida, abra a tabela filha e registre mapeamento dos campos de relacionamento:
protected $_referenceMap = array( //Array das tabelas relacionadas 'Empresa' => array( //Nome da Tabela relacionada 'refTableClass'=>'Application_Model_DbTable_NomeDaTabelaPai', //Campo de relacionamento da tabela pai 'refColumns'=>'id', //Campo de relacionamento da tabela filha 'columns'=>'empresa_id', //Opcionais 'onDelete'=>self::CASCADE, 'onUpdate'=>self::RESTRICT ) );
A partir de agora você pode chamar diretamente no seu controller:
$tabela_principal = new NomeDoModel(); $this->view->dados = $tabela_principal->fetchAll();
E na sua view fazer o tratamento com um “foreach”, a única coisa que deverá ser acrescentada é no ponto onde você quer as informações da tabela filha usar o seguinte comando:
$tabela_secundaria = $tabela_principal->findDependentRowSet('Application_Model_DbTable_NomeDaTabelaFilha');
Isto retorna um array que poderá ser tratado norlmamente com o uso de um foreach.