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.

Baixe aqui todos os exemplos deste site.

Gostou? Não esqueça de curtir!

Ou compartilhe o link com seus amigos

Compartilhar no Facebook Compartilhar no Google Bookmarks Compartilhar no Twitter Compartilhar no LinkedIn

Nenhum comentário

Deixe uma resposta