Usando Zend_Db_Select com clausulas JOIN

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 post10025\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.

Baixe aqui os exemplos desta página.

Fique por dentro de nossas novidades, ideias e atualizações