Neste tutorial vou demonstrar como utilizar a cláusula JOIN entre duas tabelas do MySql com Zend_Db_Select. Primeiro criei duas tabelas, uma de usuário e outra para a permissão.
CREATE TABLE IF NOT EXISTS `permissao` (
`PERMISSAO_ID` int(11) NOT NULL AUTO_INCREMENT,
`USUARIO_ID` int(11) NOT NULL,
`PERMISSAO_NOME` enum('admin','user','gest') NOT NULL,
PRIMARY KEY (`PERMISSAO_ID`)
);
CREATE TABLE IF NOT EXISTS `usuario` (
`USUARIO_ID` int(11) NOT NULL AUTO_INCREMENT,
`USUARIO_NOME` varchar(55) NOT NULL,
PRIMARY KEY (`USUARIO_ID`)
);
Agora adiciono os dados nestas tabelas
INSERT INTO `permissao` (`PERMISSAO_ID`, `USUARIO_ID`, `PERMISSAO_NOME`) VALUES
(1, 1, 'admin'),
(2, 2, 'gest');
INSERT INTO `usuario` (`USUARIO_ID`, `USUARIO_NOME`) VALUES
(1, 'Eduardo Kraus'),
(2, 'Fulano da Silva');
Se fôssemos criar o SQL para unir estas duas tabelas, ficaria assim:
SELECT *
FROM `usuario`
JOIN `permissao`
ON ( `usuario`.`USUARIO_ID` = `permissao`.`USUARIO_ID`)
Eu tenho aqui a tabela usuário que é a principal que tem a permissão como referencia. Agora vamos executa-la com o Zend_Db_Select
Arquivo post25\index.php<?php
require_once '../Config.php';
$db = Config::getDbInstance ();
$stmt = $db->select ();
$stmt->from ( 'usuario' );
$stmt->join ( 'permissao', '`usuario`.`USUARIO_ID` = `permissao`.`USUARIO_ID`' );
$result = $db->fetchAll ( $stmt );
print_r ( $result );
?>
Vamos a explicação.
Após importado o Config e carregado a instância de conexão, criamos uma instancia do Zend_Db_Select com a chamada $db->select (). Nesta instância chamamos a tabela principal com o from e adicionamos a tabela secundária com o join. No join tem que ser adicionado o nome da tabela seguido da cláusula ON.
Só executar e testar.




